gpt4 book ai didi

sql - 国际化的MySQL数据库设计

转载 作者:可可西里 更新时间:2023-11-01 07:06:38 30 4
gpt4 key购买 nike

我将开始开发一个中型应用程序,并且正在计划它的数据库设计。我不确定的一件事是这个。我将有许多需要国际化的表,例如:“membership_options、gender_options、language_options 等”

这些表中的每一个都将共享通用的 i18n 字段,例如:“标题,替代标题,简短描述,描述”

您认为哪种方法最好?是否有一个 i18n 表,每个表都需要相同的字段?

或者做类似的事情:

Membership table     Gender table
---------------- --------------
id | created_at id | created_at
1 - 22.03.2001 1 - 14.08.2002
2 - 22.03.2001 2 - 14.08.2002


General translation table
-------------------------
record_id | table_name | string_name | alternative_title| .... |id_language
1 - membership regular null 1 (english)
1 - membership normale null 2 (italian)
1 - gender man null 1(english)
1 -gender uomo null 2(italian)

这将避免我重复类似的内容:

membership_translation table
-----------------------------
membership_id | name | alternative_title | id_lang
1 regular null 1
1 normale null 2

gender_translation table
-----------------------------
gender_id | name | alternative_title | id_lang
1 man null 1
1 uomo null 2

等等,所以我可能会减少数据库表的数量,但我不确定性能。我不是一个数据库设计师,所以请告诉我。

最佳答案

我见过的最常见的做法是使用两个表,membershipmembership_ml,一个存储基值,一个 ml 表存储本地化字符串.这类似于您的第二个选项。我看到的大多数这样的系统都是这样做的,因为它们从一开始就没有考虑国际化,所以额外的 _ml 表是后来“添加上去的”。

我认为更好的选择与您的第一个选择相似,但有一点不同。您将有一个用于存储所有翻译的中央表,但不是将表名和字段名放在那里,而是使用标记和一个中央“内容”表来存储所有翻译。这样,您也可以根据需要在基表中的标记和内容表中的翻译之间实现某种 RI。

我其实asked a question前段时间关于这件事,所以您可以查看它以获取更多信息(而不是在此处重新粘贴模式示例)。

关于sql - 国际化的MySQL数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4596385/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com