Tôi có một số bảng cơ sở dữ liệu chứa các cột name
và description
cần được bản địa hóa. nỗ lực ban đầu của tôi lúc thiết kế một schema DB rằng sẽ hỗ trợ này là một cái gì đó như:Cơ sở dữ liệu địa phương hóa
product
-------
id
name
description
local_product
-------
id
product_id
local_name
local_description
locale_id
locale
------
id
locale
Tuy nhiên, giải pháp này đòi hỏi một local_
bảng mới cho mỗi bảng có chứa name
và mô tả cột đòi hỏi localization
. Trong một nỗ lực để tránh chi phí này tôi đã thiết kế lại schema để chỉ một bảng duy nhất localization
là cần thiết
product
-------
id
localization_id
localization
-------
id
local_name
local_description
locale_id
locale
------
id
locale
Dưới đây là một ví dụ về các dữ liệu đó sẽ được lưu trữ trong schema này khi có 2 bảng (sản phẩm và quốc gia) yêu cầu nội địa hóa:
nước sản phẩm
id, localization_id
-----------------------
1, 5
id, localization_id
-----------------------
1, 2
nội địa hóa
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
locale
id, locale
--------------
2, en
3, fr
4, de
Chú ý rằng các khóa chính hợp chất của bảng localization
là (id, locale_id)
, nhưng chìa khóa ngoại trong bảng product
chỉ đề cập đến yếu tố đầu tiên của hợp chất PK này. Điều này có vẻ như 'một điều xấu' từ POV bình thường hóa.
Có cách nào tôi có thể khắc phục sự cố này hay không, liệu có một lược đồ hoàn toàn khác hỗ trợ bản địa hóa mà không tạo bảng riêng cho từng bảng có thể bản địa hóa không?
Cập nhật: Một số người trả lời đã đề xuất giải pháp yêu cầu tạo bảng riêng cho từng bảng có thể bản địa hóa. Tuy nhiên, đây chính xác là những gì tôi đang cố gắng tránh. Lược đồ tôi đã đề xuất ở trên hầu như giải quyết được vấn đề cho sự hài lòng của tôi, nhưng tôi không hài lòng với thực tế rằng các khóa ngoài localization_id
chỉ tham chiếu đến một phần của khóa chính tương ứng trong bảng localization
.
Cảm ơn, Don
"nhưng tôi không hài lòng về thực tế là các khóa ngoại ngữ localization_id chỉ tham chiếu đến một phần của khóa chính tương ứng trong bảng bản địa hóa". Tôi không thấy vấn đề, có một đến nhiều mối quan hệ từ sản phẩm đến nội địa hóa, cấu trúc cơ sở dữ liệu theo yêu cầu, bạn đã tìm thấy một giải pháp tốt. –
Điều này sẽ được đăng trên http://dba.stackexchange.com/ –