SQL数据库/列名约定+语言代码

时间:2018-05-09 17:16:27

标签: database naming-conventions

通常在主表中我们有name列,通常是英文。 但是,如果我们使用不同的语言,那么最佳的列命名约定是什么呢? en_namename_en好吗? (请记住,我将使用JPA和实体)。现在,我需要以下列:

  • en_name为英语。
  • ar_name代表阿拉伯语。
  • fr_name代表法语。
  • de_name代表德语。

    另外,哪个更好用两个字母ISO 639-1代码或三个字母ISO 639-2 Code?

1 个答案:

答案 0 :(得分:1)

这取决于你需要什么。如果您只需要一个单独的列来存储数据库名称翻译,我建议您使用name_dename_en ...,但这只是我的偏好,它是&#39 ;易于阅读和理解专栏的目的。

但想想过滤(搜索)。如果您在同一个表中使用其他列来优先使用此aprouch,则需要在查询(存储过程)中添加某种切换以搜索特定语言的名称 - 对于您需要在name_en中搜索的英语,德语 - name_de。因此,我可以推荐使用单独的表格进行解决方案,以便使用列id[master_table]_idlanguage_codetext(或名称)进行本地化。

例如,有一个表item,其中包含id列和name列。 我会创建包含item_localizationiditem_idlanguage_code列的表text。 因此,item中表格item_localization中的行(1,"名称")将为(1,1," en"," name- en"),(1,2和" de"," name-de")。

我更喜欢以master table英文名称存储,并在本地化表中复制它。在这种情况下,可以通过本地化名称轻松过滤,例如

select item.*
from item
join item_localization on item_localization.item_id = item.id
where item_localization.language_code = "de" and item_localization.text like "%some_text%"

但这只是我的经验和想法。