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

Database design 存储用户lang/locale的数据库设计:用户表中的字符串或lang表中的id-string和用户表中的引用id?,database-design,Database Design,我是一名noob,正在努力找出最佳数据库设计,以: 存储用户语言偏好(en/fr/es/etc) 我有一个用户表,其中存储了诸如电子邮件、登录日期等数据 我想知道我是否应该: A.将用户语言以字符串格式“en”存储在与新列lang相同的表中 B.创建语言表并在其中插入: 1-en 2-fr 3-es 然后在我的主用户表中,以Int格式“1”的新列lang中引用该表 我想这是一个基本的问题,但这将帮助我理解数据库设计的最佳实践,并在我的学习中有一个良好的开端 提前感谢您的建议和回复。我将使用一个单

我是一名noob,正在努力找出最佳数据库设计,以:

存储用户语言偏好(en/fr/es/etc)

我有一个用户表,其中存储了诸如电子邮件、登录日期等数据

我想知道我是否应该:

A.将用户语言以字符串格式“en”存储在与新列lang相同的表中

B.创建语言表并在其中插入:

1-en

2-fr

3-es

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

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


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

我将使用一个单独的表,因为您可能希望存储更多关于该语言的数据,而不仅仅是语言代码。例如,完整的语言名称(用于语言选择框)、ISO国家代码、旗帜图像的路径,或者用于获取相关用户界面字符串的翻译系统索引。

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

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

但是,如果一个表只有一个或两个字段,则编写查询会变得更加复杂,因为附加的联接取决于您拥有的附加表的数量

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


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

您所说的“数据库架构验证规则”是什么意思?另外,如果我使用主用户表中的字符串,我将如何检索可能的语言列表并将其显示为选项列表?两个回答都很有趣,我最终决定使用一个单独的表,以存储区域设置代码(fr/en/es)以及3种语言的下拉列表标签