良好的数据库表设计,用于存储数据的本地化版本
时间: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 ...
输入动态数据后,创建默认的"英语"记录,然后随意翻译。