I've been considering three similar database designs, but haven't come up with a very strong for or against regarding any of them.
One huge table for content
content: int id, enum type, int parent_id, varchar title, text body, text data
This would assign each row a type (news, blog, etc), and have fields for common/standard/searchable data, then any non-standard or trivial data is stored as serialized xml in the
data
field.One table for ids, many tables for content
ids: int id, enum tableName, int parent_id
This has one large table for ids, then every other table references this id, making it easy to have hierarchical content.
A combination of the two above, where a main table stores all common info, but unimportant data is stored in a respective table.
Naturally it's easier to keep data consistent when everything has its own table, but the above ideas make it much easier to force standardization of common fields, and makes it a lot simpler to relate content to eachother (especially with tagging).
Any thoughts or links would be appreciated.