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

保留多语言数据的最佳数据库结构是什么?[重复]

司马萧迟
2023-03-14
问题内容

这个问题已经在这里有了答案

8年前关闭。

可能重复:
多语言数据库的架构

这是一个例子:

[ products ]
id (INT)
name-en_us (VARCHAR)
name-es_es (VARCHAR)
name-pt_br (VARCHAR)
description-en_us (VARCHAR)
description-es_es (VARCHAR)
description-pt_br (VARCHAR)
price (DECIMAL)

问题: 每种新语言都需要修改表结构。

这是另一个例子:

[ products-en_us ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)

[ products-es_es ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)

问题是: 每种新语言都需要创建新表,并且每个表中都有“价格”字段重复。

这是另一个例子:

[ languages ]
id (INT)
name (VARCHAR)

[ products ]
id (INT)
price (DECIMAL)

[ translation ]
id (INT, PK)
model (VARCHAR) // product
field (VARCHAR) // name
language_id (INT, FK) 
text (VARCHAR)

问题: 难吗?


问题答案:

您的第三个示例实际上是通常解决问题的方式。努力,但可行。

从翻译表中删除对产品的引用,然后将翻译的引用放在您需要的地方(反之亦然)。

[ products ]
id (INT)
price (DECIMAL)
title_translation_id (INT, FK)

[ translation ]
id (INT, PK)
neutral_text (VARCHAR)
-- other properties that may be useful (date, creator etc.)

[ translation_text ]
translation_id (INT, FK)
language_id (INT, FK) 
text (VARCHAR)

作为一种替代方法(不是很好的替代方法),您可以有一个单独的字段,并将那里的所有翻译合并在一起(例如XML)。

<translation>
  <en>Supplier</en>
  <de>Lieferant</de>
  <fr>Fournisseur</fr>
</translation>


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

  • 当你决定看这篇文章,就意味着系统学习 数据结构的开始。本节,我们先来讲什么是 数据结构。   数据结构,直白地理解,就是研究数据的存储方式。 我们知道,数据存储只有一个目的,即为了方便后期对数据的再利用,就如同我们使用数组存储 是为了后期取得它们的加和值,无缘由的数据存储行为是对存储空间的不负责任。 因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好的方式来存储数据,而这也是数

  • 我想做一个递归函数,减少振幅/时间图上的数据点,同时保留曲线的特征。我最初认为我应该使用一个循环,这里是粗略的伪代码; 空隙压缩(长度时间,幅度范围){ 检查长度时间的分辨率是否高于数据返回的分辨率(如果高于); 循环通过长度时间,得到最小和最大幅度; 如果最小和最大振幅之间的差异在振幅范围内,则存储最小和最大并返回; 如果没有,除以时间长度/4并调用compress(长度时间/4,范围); 然而

  • 问题内容: 说我有以下内容及其对应的内容,它们代表一个。 请注意,可能是不同的(,,,引用到任何-其他对象,等等)。 将会有很多(至少> 100,000)。当所有这四个(实际上是)放在一起时,每个都会。换句话说,不存在与所有4个相同的事物。 我试图找到一个高效的数据结构,这将让我(商店)获取基于其中任何一项的时间复杂度。 例如: 的调用方式如下: 以上应该返回 以上应该返回 而且,将来我可能需要在

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

  • 问题内容: 在阅读了有关数据库架构迁移和版本的许多问题之后,我提出了一种在更新过程中安全地更新数据库架构的方案。基本思想是,在更新期间,我们将数据库导出到文件中,删除并重新创建所有表,然后重新导入所有内容。那里没有什么花哨或冒险的地方。 问题在于该系统在某种程度上是“病毒的”,这意味着仅 添加 列或表是安全的,因为删除列或表会在重新导入数据时引起问题。通常,忽略这些列就可以了,但问题是实际上已重构