我们正在创建一个大型电子商务数据库,该数据库需要支持多种语言的数据。例如,product表需要一个或多个Name、Description、MetaTitle、MetaKeywords、MetaDescription等翻译。
从关系数据库设计的角度来看,有几种方法可以实现这一点。但是Entity Framework4增加了一些约束,性能是一个很大的问题。
与Multilingual Database Design中类似的问题
下面是我们正在考虑的一组表的示例:
[Product]
- Id (PK)
- CreateDate
- NamePhraseId (FK)
- DescriptionPhraseId (FK)
- Price
- ...
[Phrase]
- id (PK)
- Invariant
[Translation]
- id (PK)
- PhraseId (FK)
- LanguageCulture (Example: en-US)
- Translation我们还可以添加一个LanguageCulture查找表。
与其他方法一样,这种方法也有其优缺点。我们不希望必须为每个可能需要转换的表列(例如没有ProductName、ProductDescription表)创建额外的表,因为这会使我们的数据模型太大。
在上面的示例中,产品名称将包含零个或一个短语以及一个或多个翻译。我记得,实体框架需要1对1的关系才能在表上具有相同的主键,我不知道0或1关系的情况是否相同,但这可能会破坏上面的方法。
我真的很难找到关于实体框架和多语言数据库/模型设计指南的好信息。我非常赞赏强调良好的设计和尽可能好的性能的建议和指导。
提前感谢!
发布于 2010-04-07 04:25:33
考虑到EF4的POCO支持,我想说数据库的设计应该少与EF有关,而更多地与好的多语言设计有关。
根据文档,EF支持“零或一”关系。只需将Translation表中的PhraseId设为可空,这应该会产生一个0..1关系。
https://stackoverflow.com/questions/2587898
复制相似问题