CMS数据库架构

时间:2014-02-25 21:10:14

标签: php mysql database content-management-system structure

我正在构建一个自定义CMS系统,使用PHP和MySQL。我的CMS将有页面。每个页面都是一种类型。每种页面类型都分配了一些不同类型的属性(数字,文本等)。我目前正在创建用于存储这些东西的数据库 - 页面类型,属性,页面和属性值。第一个解决方案是有4个不同的表:

=pages=
page_id
page_type_id
page_name

=page_types=
page_type_id
page_type_name

=page_properties=
property_id
property_name

=page_property_values=
page_id
property_id
property_value

唯一的问题是,我必须将所有类型的属性保存到相同的数据类型字段(例如varchar)。我真正想要的是将布尔数据保存到布尔字段。

我的第二个解决方案是为每种页面类型创建一个单独的表。例如:

=page_type_text_page=
page_id
title [varchar]
content [text]
active [boolean]

有人可以帮助我,如何修改这个结构以获得正确的解决方案?

2 个答案:

答案 0 :(得分:0)

我想帮助您解决一些经验:

  1. 不要建立自己的CMS - 这可能不是一个好主意。这样做非常复杂。使用/修改一些开源CMS(Wordpress,Joomla等)来获得你想要的东西。
  2. 如果我要创建一个新的CMS,请不要使用PHP和MySQL组合,因为它已经完成了,并且它在很好的社区中做得非常好。也许你可以尝试一些尚未完成的工作 - Node.js CMS,单页面应用程序CMS并使用一些mongoDB等。
  3. 如果你真的想要基于PHP MySQL构建自己的CMS并且不知道正确的数据库结构,那就用开源CMS来激励自己,就像我说的Wordpress,Joomla,Drupal等一样。它比你描述的更复杂,但你只能使用你想要的东西。

答案 1 :(得分:0)

第三种选择可能是

的内容

<强> property_types

  • property_type_id
  • PROPERTY_NAME
  • property_datatype

<强> page_property_values

  • PAGE_ID
  • PROPERTY_ID
  • property_stringvalue
  • property_boolvalue
  • property_intvalue
  • property_datetimevalue
  • ...

..您只使用某个页面属性的值列之一,其余为空。通过这种方式,您可以通过一些连接在单个调用中获取页面的所有属性,然后通过查看属性数据类型以编程方式从适当的列中获取值。