우리는 여러 언어로 된 데이터를 허용해야하는 대규모 전자 상거래 데이터베이스를 만들고 있습니다. 예를 들어, 제품 테이블은 이름, 설명, 메타 제목, 메타 키워드, 메타 설명 등에 대해 하나 이상의 번역이 필요합니다.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 및 다국어 데이터베이스/모델 디자인 지침에 대한 좋은 정보를 찾는 데 어려움을 겪었습니다. 나는 좋은 디자인과 최상의 성능에 중점을 두어 조언과지도를 대단히 기꺼이 받아 들일 것입니다.
미리 감사드립니다.
감사합니다. Dave. POCO는 실제로 문제가 아닙니다 (우리는 POCO를 사용할 것입니다), 제약 조건과 관련하여 LINQ to Entities 쿼리를 참조했습니다. 3.5에서는 외래 키가 사라져서 Product 테이블에서 Phrase 테이블 (예 : 번역 가능한 열)에 대한 다중 관계를 만드는 것이 복잡해졌습니다. EF4에서는 외래 키가 표시되지만 아직 시도하지 않았기 때문에 문제가 있는지 알 수 없습니다. 성능, 단순성 및 확장 성을 염두에두고 EF4를 사용하여 이상적인 다국어 구조/모델에 대한 지침을 실제로 찾고 있습니다. 다시 한번 감사드립니다! – Tony