用于存储用户lang / locale的数据库设计:用户表中的字符串或id - lang表中的字符串和用户表中的引用id?

时间:2011-03-13 00:13:07

标签: database-design

我是一个菜鸟,并试图找出最佳的数据库设计:

存储用户语言首选项(en / fr / es / etc)

我有一个用户表,存储数据如:电子邮件,登录日期等

我想知道我是否应该:

一个。将用户语言存储在同一个表中,作为字符串格式为“en”的新列lang

B中。创建一个语言表并插入其中:

1 - en

2 - fr

3 - es

然后在我的主用户表中以Int格式“1”的新列格式引用该表

我想这是一个基本问题,但这有助于我理解数据库设计的最佳实践,并在我的学习中有一个良好的开端。

提前感谢您的所有建议和回复。

2 个答案:

答案 0 :(得分:1)

我会使用一个单独的表,因为您可能希望存储有关该语言的更多数据,然后只存储语言代码。例如,完整的语言名称(用于语言选择框),ISO国家/地区代码,可能是标志图像的路径,或者是用于获取相关用户界面字符串的翻译系统的索引。

答案 1 :(得分:0)

两者都有优点和缺点。以下是我个人的意见。

如果您有一个单独的语言字段表,则可以将其用作查找表,以便在需要时查询可能允许的值。它允许您添加新值,而无需修改数据库模式验证规则。

但是,如果一个表只有一个或两个字段,那么编写查询会因为额外的连接而变得更加复杂,这取决于您拥有多少个其他表。

如果您有更多关于该语言的字段,例如语言国家,语言设置等,那么使用另一个表是有意义的。

由于您似乎只有一个额外的字段,我觉得最好在现有表中包含该字段。