【问题标题】:How database can be designed to maintain and display master data supporting different languages (i18n)?如何设计数据库来维护和显示支持不同语言 (i18n) 的主数据?
【发布时间】:2015-10-11 06:11:05
【问题描述】:

我们有 Spring MVC 应用程序,其中 Hibernate 用作 DAO 层,MySql 用作数据库。该数据库有职位、技能、行业等的主表。每个主表有 ​​2 列(id、value)。截至目前,每个主表中的 value 列都有 ENGLISH 语言的数据。展望未来,我们希望主表支持不同的语言(i18n/国际化),如法语、中文、葡萄牙语等。其次,我们在 UI 上将此主数据显示为自动完成下拉菜单,具体取决于用户在文本中输入的字母场地。例如:- 如果用户键入“ja”,则“java、javac、javadci”等值将显示在主表的下拉列表中,使用 where 子句中具有“like”参数的查询。在 i18n 支持下,可以解决维护和显示主数据问题的最佳策略或设计是什么?

谢谢!

【问题讨论】:

    标签: mysql database hibernate spring-mvc internationalization


    【解决方案1】:

    我将为每种支持的语言添加一个值列,并修改请求以在列名中包含区域设置名称。举例:

    SELECT * FROM master WHERE valueEN LIKE 'ja';
    

    SELECT * FROM master WHERE valueFR LIKE 'ja';
    

    【讨论】:

    • 您将如何存储属于每种语言的主数据?您会选择为每种语言设置一个单独的主表吗?或者您会选择在每个主表中为新语言添加额外的列吗?这两个选项看起来都不好,如果我们选择有单独的表,那么想象一下如果有 10 个不同的主表应该支持 10 种语言,那么我将不得不添加 10 X 10 = 100 个表。在第二个选项的情况下,取决于所需的编号。语言支持,没有。每个主表中的列数将继续增加。我需要更好的东西。
    • 我不建议拥有多个大师,而是为每种语言添加一个新列。为什么添加列对您来说是个问题?
    • 这种方法的缺点是随着我们不断添加新的语言支持,表格的列将继续增加。在查询表时使用语言列也会很笨重。
    猜你喜欢
    • 2013-12-22
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多