通常在主表中我们有name
列,通常是英文。
但是,如果我们使用不同的语言,那么最佳的列命名约定是什么呢? en_name
比name_en
好吗?
(请记住,我将使用JPA和实体)。现在,我需要以下列:
en_name
为英语。ar_name
代表阿拉伯语。fr_name
代表法语。 de_name
代表德语。
另外,哪个更好用两个字母ISO 639-1代码或三个字母ISO 639-2 Code?
答案 0 :(得分:1)
这取决于你需要什么。如果您只需要一个单独的列来存储数据库名称翻译,我建议您使用name_de
,name_en
...,但这只是我的偏好,它是&#39 ;易于阅读和理解专栏的目的。
但想想过滤(搜索)。如果您在同一个表中使用其他列来优先使用此aprouch,则需要在查询(存储过程)中添加某种切换以搜索特定语言的名称 - 对于您需要在name_en
中搜索的英语,德语 - name_de
。因此,我可以推荐使用单独的表格进行解决方案,以便使用列id
,[master_table]_id
,language_code
和text
(或名称)进行本地化。
例如,有一个表item
,其中包含id
列和name
列。
我会创建包含item_localization
,id
,item_id
和language_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%"
但这只是我的经验和想法。