1

我即将创建一个带有 php 和 mysql 的自定义 CMS。每个页面都有几个区域。每个区域都可以输出模块。例如,我们有一个新闻模块,我们已经在模块管理部分添加了新闻类别和单个新闻项目。但从这里开始:最终用户想要获得此模块的不同输出。例如,用户想要显示“体育”类别的新闻,或者用户想要显示前 5 条最新新闻,或者用户想要按某事对新闻进行排序,或者,或者,或者......模块可以采用的许多其他选项。

我的问题是您处理和管理这些选项的解决方案是什么。- 您是否建议为每个模块(如 news_options)提供一个 module_option 表?- 您是否建议使用一个包含每个模块选项的表格?

希望我能明白我的意思;)如果需要数据库图,请告诉我。

4

1 回答 1

1
  1. 第一种方法可能是为每个模块使用不同的表。然后您可以在字段中保留不同实例的设置。以可管理的形式。

    例子:

    Table: News
    ----------------------------------------------------------------------
    | id      +     news_title     +     option 1     +    option 2      |
    ----------------------------------------------------------------------
    
  2. 下一种方法,我可以使用全局配置表,它包含键名和一个字段以及另一个字段中的键值。这样您就不必从不同的模块创建不同的表。

    例子:

    表:模块选项

    --------+-----------------+-------------------+---------------------+
    |  id   |   module_id     |    setting_name   |   settings_value    |
    --------+-----------------+-------------------+---------------------+
    |   1   |   1             |     option 1      |   option value 1    |
    --------+-----------------+-------------------+---------------------+
    |   2   |   1             |     option 2      |   option value 2    |
    --------+-----------------+-------------------+---------------------+
    

关于选择哪一个的问题取决于您如何编码您的项目。两者都有自己的优点和缺点。但是,有几点需要考虑

  • 如果选项包含输入长文本的方法,那么第二种方法很糟糕,因为选项的大小会有很大差异。
  • 如果所有的模块设置都可以在固定长度的字段中进行,那么第二个选项绝对是最好的方法。
于 2012-07-08T17:43:07.863 回答