name
및 description
개의 열을 포함하는 데이터베이스 테이블을 현지화해야합니다.데이터베이스 현지화
product
-------
id
name
description
local_product
-------
id
product_id
local_name
local_description
locale_id
locale
------
id
locale
그러나,이 솔루션은 localization
을 필요로 name
및 설명 열을 포함하는 모든 테이블에 대한 새로운 local_
테이블이 필요 :이 기능을 지원 것 DB 스키마를 설계에서 내 최초의 시도는 같은 것이 있었다. 이러한 오버 헤드를 방지하기 위해 나는 2 개 테이블 (제품 및 국가)가있는 경우 단일 localization
테이블이 여기에
product
-------
id
localization_id
localization
-------
id
local_name
local_description
locale_id
locale
------
id
locale
이 스키마에 저장 될 데이터의 예 필요한 있도록 스키마를 재 설계 필요로하는 현지화 :
국가
id, localization_id
-----------------------
1, 5
제품
,515,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_id 외래 키는 현지화 테이블에서 해당 기본 키의 일부만 참조한다는 사실에 불만입니다." 문제가 보이지 않으며 제품에서 현지화까지 일대일 관계가 있습니다. 데이터베이스 구조가 요구 사항을 따르고 있으므로 좋은 해결책을 발견했습니다. –
이 게시물은 http://dba.stackexchange.com/ –