我有一個數字,包含name
和description
列這就需要進行本地化數據庫表。我在設計一個能夠支持這樣的數據庫架構初步嘗試是這樣的:數據庫本地化
product
-------
id
name
description
local_product
-------
id
product_id
local_name
local_description
locale_id
locale
------
id
locale
然而,這種解決方案需要一個新的local_
表包含name
和描述列要求localization
每個表。在試圖避免這種開銷我重新設計,使得僅需要一個單一的localization
表
product
-------
id
localization_id
localization
-------
id
local_name
local_description
locale_id
locale
------
id
locale
下面是其將被存儲在這個模式中的數據的一例的模式時,有2個表(產品和國家)需要本地化:
國家
id, localization_id
-----------------------
1, 5
產品
id, localization_id
-----------------------
1, 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
注意,localization
表的化合物主鍵是(id, locale_id)
,但在product
表的外鍵僅指這種化合物PK的第一個元素。這似乎是正常化POV的「壞事」。
有沒有什麼辦法可以解決這個問題,或者是有沒有支持本地化而不考慮每個本地化表創建一個單獨的表完全不同的架構?
更新: 一些答覆提出,需要對每個本地化表創建一個單獨的表中的溶液。但是,這正是我想要避免的。我上面幾乎提出的方案解決了這個問題讓我滿意,但我不滿的事實localization_id
外鍵僅指在localization
表中相應的主鍵的一部分。
謝謝, 唐
「但我對LOCAL_ID外鍵僅引用本地化表中相應主鍵的一部分這一事實感到不滿。 我沒有看到問題,從產品到本地化有一對多的關係,數據庫結構遵循要求,你已經找到了一個很好的解決方案。 – 2010-10-01 13:45:51
這應發佈在http://dba.stackexchange.com/ – 2014-09-27 05:42:12