加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:33:59 所属栏目:MsSql教程 来源:网络整理
导读:我有许多数据库表,其中包含需要本地化的名称和描述列.我最初尝试设计支持这种情况的数据库模式是这样的: product-------idnamedescriptionlocal_product-------idproduct_idlocal_namelocal_descriptionlocale_idlocale------idlocale 但是,此解决方案需要为
我有许多数据库表,其中包含需要本地化的名称和描述列.我最初尝试设计支持这种情况的数据库模式是这样的:
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外键只引用了本地化表中相应主键的一部分.

谢谢,

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读