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

时间:2008-09-25 13:27:33

标签: sql sql-server database-design localization

我正在尝试设计一些表来存储一些数据,这些数据必须在以后转换为不同的语言。任何人都可以为此提供一些“最佳实践”或指南吗?

由于

4 个答案:

答案 0 :(得分:14)

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

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

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

然后你加入product_id = product.id和locale ='en-US'

当然这对性能有影响,因为您现在需要一个连接来获取名称和描述,但它稍后允许任意数量的语言环境。

答案 1 :(得分:0)

我认为有关你正在做的事情的更多信息会有所帮助。你能给出一些数据样本吗?动态是什么意思?随着时间的推移会插入大量数据,对数据进行大量更改,或者数据只需要在一小段时间内可用。

答案 2 :(得分:0)

通常,您可能应该查看具有常见非本地化数据的父级,以及包含本地化数据和语言键的子表。如果通过动态,你的意思是它经常变化,你可能想看一下使用触发器和类似'translationRequired'标志的东西来标记在做出改变之后需要翻译的东西。

答案 3 :(得分:0)

您能描述一下'动态数据'的性质吗?

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

  • 语言表
    • 此表将存储语言和密钥:
    [1, English], 
    [2, Spanish]
  • 数据定义表
    • 首次输入动态数据时,请在此表中创建一条记录,其中包含数据的标识符:
      [1, 'Data1'], 
      [2, 'Data2']
  • Data_Language表
    • 此表将链接语言,数据定义和翻译
      So: [Data_Language, Data_Definition, Language, Translation]
          [1, 1, 1, 'Red']
          [2, 1, 2, 'Rojo']
          [3, 2, 1, 'Green']
          [4, 2, 2, 'Verde']

          etc ...

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