我正在设计一个数据库表。让我们说它是颜色表(红色,绿色,蓝色),用户可以从中进行选择。但是当用户来自其他国家时,我想显示字段的翻译(例如,中文,红,绿,蓝)。我不确定存储这类信息的最佳和最有效的方法是什么。我想出了以下想法
+----------------------+
| Color |
+----------------------+
| id (PK) |
| Language (PK) |
| name |
+----------------------+
通过将id和language作为主键,我可以存储并找到颜色的名称。
或者我可以这样做:
+----------------------+
| Color |
+----------------------+
| id (PK) |
| English |
| Chinese |
+----------------------+
通过这种方式,我将颜色的名称存储在一个单独的列中,这样每种颜色只对应一行,这似乎更直观。
或者我在想,我不应该在数据库中存储不同语言的颜色名称,而是将它们作为String变量存储在PHP中?
我还担心表的可维护性,因为将来可能会有更多的颜色和语言添加到表中。
我想听听你的建议。谢谢!
答案 0 :(得分:1)
如果以后将语言添加到表格中,请按照第一种方法进行。
+----------------------+
| Color |
+----------------------+
| id (PK) |
| Language (PK) |
| name |
+----------------------+
在页面加载时,您可以检测用户的首选语言,并可以相应地进行SQL查询。
答案 1 :(得分:1)
如果您的实际模型比这更复杂,您可能需要创建一个单独的表来存储与语言相关的信息。坚持使用这个例子,如果对于每种颜色,你有(R,G,B)值,即(255,255,2555),这些值不会随着语言而变化,你可能只想让Color表成为所有与语言无关的字段,然后是一个新的表Color_Lang,它有一个外键可以着色并保存所有依赖于语言的字段。
答案 2 :(得分:0)
不是一个直接的答案,但考虑到对于颜色,你可以只显示实际的颜色而不是用于描述它的人工词。
甚至还有可用于此特定目的的开箱即用颜色选择器。