我即将创建一个带有php和mysql的自定义CMS。 每个页面都有几个区域。 每个区域都可以输出模块。 例如,我们有一个新闻模块,我们已经在模块管理部分添加了新闻类别和单个新闻项目。但这里开始了:最终用户希望获得此模块的不同输出。例如,用户想要显示"体育"类别的新闻,或者用户想要显示前 5 条最新新闻,或者用户想要按某事对新闻进行排序,或者,或者,或者......模块可以采用的许多其他选项。
我的问题是,您处理和管理这些选项的解决方案是什么。- 您是否建议像news_options这样的每个模块都有一个module_option表?- 您是否建议使用包含每个模块选项的单个表?
希望我能明白我的意思;)也让我知道是否需要数据库图。
-
第一种方法可能是为每个模块使用不同的表。然后,您可以在字段中保留不同实例的设置。以可管理的形式。
例:
Table: News ---------------------------------------------------------------------- | id + news_title + option 1 + option 2 | ----------------------------------------------------------------------
-
下一个方法,我可以使用全局配置表,该表保存键名称和一个字段以及另一个字段中的键值。这样,您就不必从不同的模块创建不同的表。
例:
表:模块选项
--------+-----------------+-------------------+---------------------+ | id | module_id | setting_name | settings_value | --------+-----------------+-------------------+---------------------+ | 1 | 1 | option 1 | option value 1 | --------+-----------------+-------------------+---------------------+ | 2 | 1 | option 2 | option value 2 | --------+-----------------+-------------------+---------------------+
关于选择哪一个而不是哪个的问题取决于您如何编写项目代码。两者都有自己的优点和缺点。但是,需要考虑的一些要点
- 如果选项包含输入长文本的方法,则第二种方法很糟糕,因为选项的大小会有很大差异。
- 如果所有模块设置都可以在固定长度字段中伴随,那么第二个选项绝对是最好的方法。