我应该如何使用MySQL构建我的设置表?

时间:2010-03-18 11:44:25

标签: mysql database organization

构建用于存储管理设置的MySQL表的最佳方法是什么?

喜欢这个吗?

Setting _|_ Value
setting1 |   a
setting2 |   b
setting3 |   c
setting4 |   d
setting5 |   e

或者喜欢这个?

|--------|_setting1_|_setting2_|_setting3_|_setting4_|_setting5_|
Settings |    a     |    b     |    c     |    d     |    e     |

或者其他一些方式?

4 个答案:

答案 0 :(得分:23)

表名='设置'

name  | varchar <-- primary key
value | varchar

然后你可以像这样查询:

SELECT * FROM settings WHERE name = 'default_printer';

此选项简单易用,适用于10或10,000设置。使用另一个选项,您将不得不添加一个新列,这将完全没有浪费时间。

修改

在您的第一条评论之后,您可以选择多个这样的值:

SELECT * FROM settings WHERE name IN ('default_printer','default_page_size');

: - )

答案 1 :(得分:4)

将第一个选项(SettingValue)视为列。但是也要考虑添加额外的元列,例如Description(如果你有很多不明确的设置会派上用场),PreviousValueLastUpdatedUpdatedBy,等

答案 2 :(得分:1)

您的第一个示例,名称 - 值对或EAV,可以提供更大的灵活性。

查看wiki page about EAV modelling in databases

答案 3 :(得分:0)

像往常一样,这取决于。解决方案1更简单。 Sol#2可以轻松地与ORM集成,但可能会遇到DB行大小限制。 谷歌的OTLT(如在一个真正的查找表问题) 你有多少设置(几个?几十个?几百个?)你需要多久一次?