【问题标题】:CMS database schemaCMS 数据库架构
【发布时间】:2014-02-25 21:10:13
【问题描述】:

我正在使用 PHP 和 MySQL 构建自定义 CMS 系统。我的 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]

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

【问题讨论】:

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


    【解决方案1】:

    第三个选项可能是

    property_types

    • property_type_id
    • property_name
    • property_datatype

    page_property_values

    • page_id
    • property_id
    • property_stringvalue
    • property_boolvalue
    • property_intvalue
    • property_datetimevalue
    • ...

    ..您可以只为某个页面属性使用其中一个值列,而将其余部分留空。这样,您就可以通过几个连接在一次调用中获取页面的所有属性,然后通过查看属性数据类型以编程方式从相应列中获取值。

    【讨论】:

      【解决方案2】:

      我想通过我的一些经验来帮助你:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多