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

3

我已经思考了一段时间的问题,现在我即将开始另一个需要此功能的项目,我不禁想知道我是否正在使用“正确的方法”。

基本上,在我的API中(例如企业电话系统),我们的客户可以切换多个选项,例如“转发呼叫到交互式菜单”或修改来电者听到的语音问候。

通常情况下,我通过在MySQL数据库中创建仅有一行数据的表格来处理此类问题,并且每次用户更改某些内容时都会更新该行数据。

但我觉得这样做有点过头了。我是否正在使用正确的方法?


配置设置应该分为两个位置:一个是针对每个应用程序/全局设置的位置,另一个是针对每个用户或函数设置的位置,由于它们需要与某些东西关联,所以应该放在数据库中。 - mario
1个回答

4

如果这是一个全局设置,即不针对特定用户,我建议使用两个表。第一个表列出可用设置及其定义,包括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

太喜欢了,谢谢! - drewwyatt
我确实有一个问题 - 在UserSettings中,您使用哪种数据类型进行设置?一些设置是布尔值,而有些则不是,是否使用VarChar? - drewwyatt
1
@anwyatt 数据类型不是我的强项,但根据你刚才说的,我会说是的,对于这个例子来说,只用varchar。在varchar中,你不能对数字进行排序或加法等操作,但对于一个Settings表,你可能只需要检查它是否为1或0。请参考此链接了解更多关于在varchar字段中存储整数的信息:https://dev59.com/dHA75IYBdhLWcg3w9-Ox - Luke Shaheen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接