I am writing a Content management systems in PHP that enables the consumer to define different fields (e.g. your blog page might have fields for Title (string), Content (wealthy text), Picture (file)). I want the consumer to have the ability to add and take away fields dynamically, and the only method I'm able to think about to get it done with relational DBs would be to serialise each one of these values and store them in a single cell.

This appears just like a slow approach and like I am attempting to fit something dynamic inside a static structure. Could someone recommend anything that's PHP-compatible that will get this to simpler?

One response is document-oriented databases for example CouchDB.

Another response is not have a pre-defined database, but create it dynamically in reaction to user's wishes.

Third possibility, inside a relational database, is to possess a table that appears like (id, name, value), to ensure that a n-column row could be written as n rows within this table. It isn't too pretty though. It is simple enough to locate any sort of value then, but when you would like them all you will need a n-fold custom-built join :)