2010-04-06 4 views
4

우리는 여러 언어로 된 데이터를 허용해야하는 대규모 전자 상거래 데이터베이스를 만들고 있습니다. 예를 들어, 제품 테이블은 이름, 설명, 메타 제목, 메타 키워드, 메타 설명 등에 대해 하나 이상의 번역이 필요합니다.Entity Framework를 사용하는 다국어 데이터베이스 4 지침

관계형 데이터베이스 디자인 관점에서이를 수행하는 데는 여러 가지 방법이 있습니다. 그러나 Entity Framework 4에는 몇 가지 제약 조건이 추가되었으며 성능이 큰 관심사입니다.

[Product] 
- Id (PK) 
- CreateDate 
- NamePhraseId (FK) 
- DescriptionPhraseId (FK) 
- Price 
- ... 

[Phrase] 
- id (PK) 
- Invariant 

[Translation] 
- id (PK) 
- PhraseId (FK) 
- LanguageCulture (Example: en-US) 
- Translation 

우리는 또한 LanguageCulture 조회 테이블을 추가 할 수 있습니다 : 여기 Multilingual Database Design

같이

비슷한 문제는 우리가 고려하고있는 테이블의 설정 예입니다.

이 방법은 장단점이 다른 방법입니다. 우리는 데이터 모델을 너무 크게 만들 수 있기 때문에 번역이 필요할 수도있는 각 테이블 열에 대한 추가 테이블 (예 : ProductName, ProductDescription 테이블 없음)을 생성하지 않아도됩니다.

위의 예에서 제품 이름에는 0 개 또는 하나 이상의 번역이 포함 된 구가 포함됩니다. Entity Framework는 테이블에 동일한 기본 키를 갖기 위해 1 대 1 관계가 필요하지만, 0 또는 1 관계가있는 동일한 케이스인지는 모르겠지만 위의 방법에서는 딜 브레이커 일 수 있습니다.

저는 Entity Framework 및 다국어 데이터베이스/모델 디자인 지침에 대한 좋은 정보를 찾는 데 어려움을 겪었습니다. 나는 좋은 디자인과 최상의 성능에 중점을 두어 조언과지도를 대단히 기꺼이 받아 들일 것입니다.

미리 감사드립니다.

답변

0

EF4의 POCO 지원을 감안할 때 데이터베이스의 디자인은 EF와 관련이없고 좋은 다국어 디자인과 관련이 있어야한다고 말하고 싶습니다.

설명서에 따르면 EF는 "0 또는 1"관계를 지원합니다. Translation 테이블의 PhraseId을 Null 허용으로 설정하면 결과는 0..1입니다.

+0

감사합니다. Dave. POCO는 실제로 문제가 아닙니다 (우리는 POCO를 사용할 것입니다), 제약 조건과 관련하여 LINQ to Entities 쿼리를 참조했습니다. 3.5에서는 외래 키가 사라져서 Product 테이블에서 Phrase 테이블 (예 : 번역 가능한 열)에 대한 다중 관계를 만드는 것이 복잡해졌습니다. EF4에서는 외래 키가 표시되지만 아직 시도하지 않았기 때문에 문제가 있는지 알 수 없습니다. 성능, 단순성 및 확장 성을 염두에두고 EF4를 사용하여 이상적인 다국어 구조/모델에 대한 지침을 실제로 찾고 있습니다. 다시 한번 감사드립니다! – Tony

관련 문제