微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库设计 – 数据库本地化

我有许多数据库表,其中包含需要本地化的名称和描述列.我最初尝试设计支持这种情况的数据库模式是这样的:
product
-------
id
name
description


local_product
-------
id
product_id
local_name
local_description
locale_id


locale
------
id
locale

但是,此解决方案需要为包含需要本地化的名称和描述列的每个表创建一个新的local_ table.为了避免这种开销,我重新设计了模式,因此只需要一个本地化表

product
-------
id
localization_id


localization    
-------
id    
local_name
local_description
locale_id


locale
------
id
locale

以下是有2个表(产品和国家/地区)需要本地化时将存储在此架构中的数据示例:

国家

id,localization_id
-----------------------
1,5

产品

id,2

本土化

id,local_name,local_description,locale_id
------------------------------------------------------
2,apple,a delicIoUs fruit,2
2,pomme,un fruit délicieux,3
2,apfel,ein köstliches Obst,4
5,ireland,a small country,2
5,irlande,un petite pay,3

现场

id,locale
--------------
2,en
3,fr
4,de

请注意,本地化表的复合主键是(id,locale_id),但product表中的外键仅指该复合PK的第一个元素.从标准化的POV来看,这似乎是一件“坏事”.

有什么方法可以解决这个问题,或者,是否有一个完全不同的架构支持本地化而不为每个可本地化的表创建单独的表?

更新:
许多受访者提出了一种解决方案,需要为每个可本地化的表创建一个单独的表.但是,这正是我想要避免的.我上面提出的模式几乎解决了我满意的问题,但我不满意的是,localization_id外键只引用了本地化表中相应主键的一部分.

谢谢,

解决方法

我认为没关系.您描述的是产品与其本地化文本之间的一对多关系.

我想知道你是否应该本地化英语而不是在产品表中对其进行非规范化.

原文地址:https://www.jb51.cc/mssql/78595.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐