当前位置: 首页 > 面试题库 >

用于国际和多语言目的的数据库建模

诸新霁
2023-03-14
问题内容

我需要为将是多语言的Web应用程序创建大型DB模型。

我每次都在思考如何做到这一点时,一个疑问就是我如何解决一个字段的多个翻译问题。一个案例。

管理员可以从后端编辑的语言级别表可以有多个项目,例如:基本,高级,流利,重要…在不久的将来,它将是另一种类型。管理员转到后端并添加一个新级别,它将在正确的位置进行排序。.但是,我如何为最终用户处理所有翻译?

数据库国际化的另一个问题是,对于用户研究而言,从美国到英国再到德国,可能有所不同…在每个国家中,他们都有自己的水平(可能等同于另一个,但最终是不同的)。那计费呢?

您如何大规模建模?


问题答案:

这是我设计数据库的方式:

资料模型

通过 DB Designer Fork进行可视化

i18n表仅包含一个PK,因此任何表都只需引用该PK即可国际化字段。translation然后,该表负责将此通用ID与正确的翻译列表链接。

locale.id_localeVARCHAR(5)同时管理enen_US
ISO语法的。

currency.id_currencyCHAR(3)管理ISO
4217语法的一个

您可以找到两个示例:pagenewsletter。这两种的 管理员管理
的entites分别需要国际化的田地,title/descriptionsubject/content

这是查询示例:

select
  t_subject.tx_translation as subject,
  t_content.tx_translation as content

from newsletter n

-- join for subject
inner join translation t_subject
  on t_subject.id_i18n = n.i18n_subject

-- join for content
inner join translation t_content
  on t_content.id_i18n = n.i18n_content

inner join locale l

  -- condition for subject
  on l.id_locale = t_subject.id_locale

  -- condition for content
  and l.id_locale = t_content.id_locale

-- locale condition
where l.id_locale = 'en_GB'

  -- other conditions
  and n.id_newsletter = 1

请注意,这是一个规范化的数据模型。如果您有一个庞大的数据集,也许您可​​以考虑对它进行规范化以优化查询。您还可以使用索引来提高查询性能(在某些数据库中,外键会自动建立索引,例如MySQL
/ InnoDB)。



 类似资料:
  • 我需要为一个多语言的web应用程序创建一个大型数据库模型。 每次我思考如何做的时候,我都有一个疑问,那就是如何解决一个字段的多次翻译。一个案例。 管理员可以从后端编辑语言级别表,该表可以包含多个项目,如:基本、高级、流利、mattern。。。在不久的将来,它可能会是另一种类型。管理员进入后端并添加一个新级别,它会将其排序到正确的位置。。但是我如何为最终用户处理所有的翻译呢? 数据库国际化的另一个问

  • 问题内容: 我正在开发一种多语言软件。就应用程序代码而言,可本地化性不是问题。我们可以使用特定于语言的资源,并拥有与之配合使用的各种工具。 但是,定义多语言数据库架构的最佳方法是什么?假设我们有很多表(100个或更多),每个表可以有多个可以本地化的列(大多数nvarchar列应该可以本地化)。例如,其中一个表可能包含产品信息: 我可以想到三种支持NAME和DESCRIPTION列中的多语言文本的方

  • 我们正忙于一个需要支持多种语言的CakePHP项目。但有一个问题....有些页面不支持其他语言。因此,有西班牙网页,需要隐藏的意大利版本的网站。在CakePHP中对此有什么更好的解决方案? 只要您切换语言,我们就可以切换数据库,但问题是,作为用户,我们将错过重要的数据,如果我们这样做的话。如果只搜索西班牙文、意大利文、德文、英文、荷兰文和瑞典文的文章,可能会使数据库负荷过重。或者如果我们索引语言栏

  • 问题内容: 我有一个需要支持多语言界面的应用程序,确切地说是五种语言。对于接口的主要部分,可以使用标准的Res​​ourceBundle方法来处理。 但是,数据库包含许多表,这些表的元素包含人类可读的名称,描述,摘要等。必须有可能以所有五种语言输入每一个。 虽然我想我可以简单地在每个表上都有字段 我认为在编写代表每个表的bean时,这会导致大量的很大程度上相同的代码。 从纯粹面向对象的角度来看,解

  • 问题内容: 我正在构建一个应用程序,它将需要提供多种语言和区域设置。 我的问题不是纯粹的技术问题,而是关于架构以及人们在生产中实际用来解决此问题的模式。我在那里找不到任何“食谱”,所以我转向了我最喜欢的问答网站:) 这是我的要求(它们实际上是“标准”): 用户可以选择语言(平凡) 更改语言后,界面应自动翻译成新选择的语言 我现在不太担心格式化数字,日期等的问题,我想要一个简单的解决方案来只翻译字符

  • 我正在构建一个应用程序,它需要有多种语言和地区。 我的问题不是纯粹的技术问题,而是关于架构,以及人们在生产中实际使用的模式来解决这个问题。我在任何地方都找不到这方面的“食谱”,所以我转向我最喜欢的问答网站:) 以下是我的要求(它们实际上是“标准”): 用户可以选择语言(普通) 更改语言后,界面应自动转换为新的选定语言 我不太担心格式化数字、日期等。目前,我想要一个简单的解决方案,只翻译字符串 以下