mysql - 在数据库中,如何存储可以有多种语言的文本?

标签 mysql database design-patterns database-design

我正在设计一个数据库表。假设它是颜色表(红色、绿色、蓝色),用户可以从中进行选择。但是当用户来自另一个国家时,我想显示字段的翻译(例如中文,红,绿,蓝)。我不确定像这样存储信息的最佳和最有效的方法是什么。我想出了以下想法

+----------------------+
| Color                |
+----------------------+
| id   (PK)            |
| Language  (PK)       |
| name                 |
+----------------------+

通过将 id 和 language 作为主键,我可以存储和查找颜色的名称。

或者我可以这样做:

+----------------------+
| Color                |
+----------------------+
| id   (PK)            |
| English              |
| Chinese              |
+----------------------+

通过这种方式,我将颜色名称存储在单独的列中,因此每种颜色仅对应一行,这似乎更直观。

或者我在想,我是不是应该将不同语言的颜色名称存储在数据库中,而是将它们作为字符串变量存储在 PHP 中?

我还担心表格的可维护性,因为将来可能会在表格中添加其他颜色和语言。

我想听听您的建议。谢谢!

最佳答案

如果将来要将语言添加到表中,请使用第一种方法。

+----------------------+
| Color                |
+----------------------+
| id   (PK)            |
| Language  (PK)       |
| name                 |
+----------------------+

在页面加载时,您可以检测用户的首选语言,并可以相应地进行 SQL 查询。

关于mysql - 在数据库中,如何存储可以有多种语言的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21376630/

相关文章:

c - 存储redis键的最佳方式

sql - 在 SQL Server 2008 中创建数据库

Java - 方法实现依赖于参数值

wpf - 使用WPF M-V-VM模式显示弹出窗口的正确方法

mysql - 从数据库查询2个不同服务器的数据

mysql - 优化简单MySQL查询响应时间

mysql - 在有限的情况下使用 REGEXP 将空格更改为连字符

mysql - 与 NVARCHAR 相比,将列设为 VARCHAR (somenumber) 有何优点?

c# - 在 C# 中获取数据库字段名称数组?

java - MVP 到 MVVM Android