Php 存储用户可编辑配置选项的最佳方式是什么?

Php 存储用户可编辑配置选项的最佳方式是什么?,php,database-design,Php,Database Design,这是我一直在思考的一段时间,现在我即将开始另一个需要这一点的项目,我不禁想知道我是否以“正确的方式”这样做 基本上,在我的API中,在本例中,一个企业电话系统-我们的客户机将能够切换几个选项,如“将呼叫转发到交互式菜单”或修改呼叫者听到的口头问候语 通常,我通过在MySQL数据库中创建一个表来处理这种情况,该表只有一行,用户每次对某个内容进行更改时都会更新该行 我忍不住觉得这太过分了。我这样做对吗?如果是全局设置,也就是说,不是特定于用户,我建议使用两个表。一个是可用设置的列表及其定义(带有Se

这是我一直在思考的一段时间,现在我即将开始另一个需要这一点的项目,我不禁想知道我是否以“正确的方式”这样做

基本上,在我的API中,在本例中,一个企业电话系统-我们的客户机将能够切换几个选项,如“将呼叫转发到交互式菜单”或修改呼叫者听到的口头问候语

通常,我通过在MySQL数据库中创建一个表来处理这种情况,该表只有一行,用户每次对某个内容进行更改时都会更新该行


我忍不住觉得这太过分了。我这样做对吗?

如果是全局设置,也就是说,不是特定于用户,我建议使用两个表。一个是可用设置的列表及其定义(带有
SettingID
),另一个表只是两个字段:
SettingID
和设置设置的内容

如果每个用户都可以为自己设置设置,只需将
UserID
添加到第二个表中即可

使用这样的两个表,使每个新设置都是一个新行,这比您建议的方式更有效。它允许您让PHP代码添加设置或修改设置,而无需修改MySQL数据库结构

SettingsList
-----------
SettingID (Auto-increment)
SettingName
SettingDescription

UserSettings
------------
UserID (if using this field, make a compound primary key from SettingID and UserID)
SettingID (SettingsList foreign key, UserSettings primary key if not using UserID)
Setting

配置设置应该放在两个位置:一个用于每个应用程序/全局设置。还有一组是针对每个用户或功能设置的,因为它们需要关联到某些东西,所以它们确实属于数据库。我喜欢这个,谢谢!但是我有一个问题-您在UserSettings中使用什么数据类型进行设置?有些设置是布尔值,有些不是,VarChar就是这样吗?@anwyatt数据类型不是我的强项,但根据你刚才所说的,我会说是,
VarChar
,仅适用于本例。对于
varchar
中的数字,您实际上无法执行任何操作,例如排序或加法,但是对于
Settings
表,除了检查它是1还是0之外,您可能不会执行任何操作。有关varchar字段中整数的详细信息,请参见此: