良好的数据库表设计,用于存储数据的本地化版本

时间:2020-03-06 14:43:13  来源:igfitidea点击:

我正在尝试设计一些表来存储一些数据,以后必须将其转换为不同的语言。有人可以为此提供一些"最佳做法"或者指南吗?

谢谢

解决方案

我相信有关我们正在做的事情的更多信息会有所帮助。我们可以提供一些数据样本吗?动态是什么意思?随着时间的流逝,将会插入大量数据,并且会对数据进行大量更改,或者该数据仅需要一小段时间可用。

假设我们有一个如下所示的产品表:

Products
----------
id
price

Products_Translations
----------------------
product_id
locale
name
description

然后,我们只需加入product_id = product.id,而locale ='en-US'

当然,这会影响性能,因为我们现在需要一个联接来获取名称和描述,但是以后可以使用任意数量的语言环境。

通常,我们可能应该查看具有公共非本地化数据的父级,以及具有本地化数据和语言键的子表。如果是动态的,则意味着它经常更改,我们可能想看看使用触发器和类似" translationRequired"标志之类的内容来标记进行更改后需要翻译的内容。

我们能否描述"动态数据"的性质?

一种实现方法是拥有3个不同的表:

[1, English], 
    [2, Spanish]
[1, 'Data1'], 
      [2, 'Data2']
So: [Data_Language, Data_Definition, Language, Translation]
          [1, 1, 1, 'Red']
          [2, 1, 2, 'Rojo']
          [3, 2, 1, 'Green']
          [4, 2, 2, 'Verde']

          etc ...

输入动态数据后,创建默认的"英语"记录,然后随意翻译。