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个不同的表:
- 语言表
- 此表将存储语言和键:
- 数据定义表
- 首次输入动态数据时,请在此表中记录数据的名称和标识符:
- 数据语言表
- 此表将链接语言、数据定义和翻译
输入动态数据时,创建默认的“英语”记录,然后在空闲时进行翻译。为什么要设置数据语言列?为什么不将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 ...