标准数据库表结构的网页附加内容?

时间:2012-02-17 15:23:16

标签: php mysql sql database-design

我有这个页面表结构来存储所有网站页面信息,

page_id
page_url
page_title
page_subtitle
page_description
page_introduction
page_content_1
page_content_2
page_content_3
page_content_4
...

您可以看到我有page_content_1page_content_4,而不只是page_content。之所以这样做是因为我可能希望为每个页面存储不同类型的页面内容。

但我怀疑这是不是一个好习惯?如果其他开发人员在此页表上进一步开发,您会发现这种结构是多余的吗?

我想也许我应该创建另一个表来存储如下所示的其他页面内容?

page_additional_content

content_id
content_additional_1
content_additional_2
content_additional_3
content_additional_4
page_id

这样更好吗?

或者我应该研究一下更好的标准观点?

2 个答案:

答案 0 :(得分:2)

基于Quentin的回答,如果您希望能够跨页面重用内容(例如页眉或页脚),您可以创建一个表结构,如:

page_content: 
     content_id (primary key)
     actual_content (actual content of the page)
page_structure: 
     page_id (foreign key of the page)
     content_id (foreign key of the content)
     order_in_page (order of the content in the page)

您可以根据需要增加内容,而无需添加其他表(只需在page_structure中添加新行并增加order_in_page计数器)。

答案 1 :(得分:0)

当您开始使用具有相同名称但具有数字后缀的列时,您通常应该开始考虑“新表+外键”。

你可能会更喜欢内容表的内容,如:

document_id  |  page  |  content
1            |  1     |  foo, bar, baz