多个外键或多个表?

时间:2020-05-15 10:13:23

标签: mysql sql

实际上,我对于在以下情况下如何更好地管理表创建感到困惑,

假设我有一个名为descriptions的表和诸如itemstypeschoices之类的表

item中的每个itemstype中的types中的choicechoices中的description / p>

假设表items typeschoices具有以下表结构(每个表都有特定的列)

+----+------+-------+
| ID | NAME | PRICE |
+----+------+-------+
| 1  | CAR  | 5     |
+----+------+-------+
| 2  | BUS  | 10    |
+----+------+-------+

和表descriptions具有以下内容:

+----+-------+---------+---------+
| ID | DESC  | DESC_EN | DESC_RU |
+----+-------+---------+---------+
| 1  | CIAO  | HELLO   | ПРИВЕТ  | // This description have to belong to items
+----+-------+---------+---------+
| 2  | PIZZA | PIZZA   | ПИЦЦА   | // This description have to belong to types
+----+-------+---------+---------+

因此,在这一点上,我的疑问是,我应该在descriptions中创建3列还是为items typeschoices创建3个外键,还是应该创建3个列?单独的表格以获取每个表格的说明?

1 个答案:

答案 0 :(得分:2)

翻译问题的另一种解决方案是创建一个表,其中每个idlanguagedescription都有一行。

这很方便,特别是在添加新语言时。对于一种新语言,除了在某些表中添加行之外,数据库中不需要进行任何更改。

另一个优点是,单个表实际上可以容纳多个不同表的翻译,因此所有翻译都放在一个位置。这样可以简化它们的最新状态,并确保整个应用程序的一致性。

一个缺点是翻译列只有一个排序规则。这使得跨语言自定义排序顺序(有时是比较)变得棘手。这是否是一个问题,还取决于您为应用程序设想的语言。某些语言(例如阿拉伯语和希伯来语)是从右到左书写的,这可能会带来其他并发症。

相关问题