我们正在创建一个大型电子商务数据库,需要支持多种语言的数据。例如,产品表将需要名称、描述、元标题、元关键字、元描述等的一项或多项翻译。
从关系数据库设计的角度来看,有多种方法可以实现这一点。但 Entity Framework 4 添加了一些限制,性能是一个大问题。
类似的问题如多语言数据库设计 https://stackoverflow.com/questions/2227985/whats-the-best-database-structure-to-keep-multilingual-data
这是我们正在考虑的一组表的示例:
[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 关系相同,但这可能是上述方法的一个障碍。
我很难找到有关实体框架和多语言数据库/模型设计指南的好信息。我非常感谢强调良好设计和最佳性能的建议和指导。
提前致谢!
鉴于 EF4 的 POCO 支持,我想说数据库的设计应该与 EF 关系不大,而与良好的多语言设计关系更大。
根据文档,EF 支持“零或一”关系。只需简单地制作PhraseId
在你的Translation
表可为空,这应该会产生 0..1 关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)