【问题标题】:What is the best way to store user editable configuration options? [closed]存储用户可编辑配置选项的最佳方式是什么? [关闭]
【发布时间】:2013-03-31 06:57:18
【问题描述】:

这是我一直想知道的事情,现在我即将开始另一个需要这个的项目,我不禁想知道我这样做是否“正确”。

基本上,在我的 API 中,在这种情况下,企业电话系统 - 我们的客户端将能够切换多个选项,例如“将呼叫转移到交互式菜单”或修改呼叫者听到的口头问候。

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

我不禁觉得这有点矫枉过正。我这样做对吗?

【问题讨论】:

  • 配置设置应该放在两个地方:一个用于每个应用程序/全局设置。另一组针对每个用户或功能设置,因为它们需要与某些东西相关联,所以它们确实属于数据库。

标签: php database-design


【解决方案1】:

如果它是一个全局设置,也就是说,不是特定于用户的,我推荐两个表。一个是您的可用设置列表,其定义为 SettingID,另一个表只有两个字段:foreign key SettingID 和设置的设置。

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

像这样使用两个表,这样每个新设置都是一个新行,normalized 然后是你建议的方式。它允许您让您的 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 中整数的更多信息,请参阅this字段:stackoverflow.com/questions/3008371/storing-numbers-as-varchar
猜你喜欢
  • 2012-10-03
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 2021-09-01
  • 1970-01-01
  • 2010-11-15
相关资源
最近更新 更多