Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 良好的数据库表设计,用于存储本地化版本的数据_Sql_Sql Server_Database Design_Localization - Fatal编程技术网

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

Sql 良好的数据库表设计,用于存储本地化版本的数据,sql,sql-server,database-design,localization,Sql,Sql Server,Database Design,Localization,我试图设计一些表来存储一些数据,这些数据以后必须转换成不同的语言。有人能提供一些“最佳实践”或指导方针吗 谢谢我相信更多关于你正在做什么的信息会有所帮助。你能提供一些数据样本吗?你说的动态是什么意思?随着时间的推移,将插入大量数据并对数据进行大量更改,或者数据只需在一小段时间内可用。假设您有一个如下所示的products表: Products ---------- id price Products_Translations ---------------------- product_id

我试图设计一些表来存储一些数据,这些数据以后必须转换成不同的语言。有人能提供一些“最佳实践”或指导方针吗


谢谢

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

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

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

Products_Translations
----------------------
product_id
locale
name
description
然后您只需在product_id=product.id和locale='en-US'上加入


当然,这会对性能产生影响,因为您现在需要一个连接来获取名称和描述,但它允许以后使用任意数量的区域设置

一般来说,您可能应该查看具有通用非本地化数据的父表,以及具有本地化数据和语言键的子表。如果说动态,您的意思是它经常更改,那么您可能想看看如何使用触发器和类似“translationRequired”的标志来标记更改后需要转换的内容

你能描述一下“动态数据”的性质吗

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

  • 语言表
    • 此表将存储语言和键:
[1,英文], [2,西班牙文]
  • 数据定义表
    • 首次输入动态数据时,请在此表中记录数据的名称和标识符:
[1,‘数据1’], [2,‘数据2’]
  • 数据语言表
    • 此表将链接语言、数据定义和翻译
So:[数据语言、数据定义、语言、翻译] [1,1,1,‘红色’] [2,1,2,‘Rojo’] [3,2,1,‘绿色’] [4,2,2,‘维德’] 等
输入动态数据时,创建默认的“英语”记录,然后在空闲时进行翻译。

为什么要设置数据语言列?为什么不将PK设置为(Data\u Definition,Language)?Data\u Language列看起来像列的id。在我看来这不是一个糟糕的设计,所以对我来说+1。我喜欢这个,聪明。并且可以毫无痛苦地使用ORMs。 [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 ...