【问题标题】:Multilingual Database with Entity Framework 4 Guidance具有实体框架 4 指南的多语言数据库
【发布时间】:2011-02-04 23:38:08
【问题描述】:

我们正在创建一个大型电子商务数据库,该数据库需要支持多种语言的数据。例如,产品表将需要名称、描述、元标题、元关键字、元描述等的一种或多种翻译。

从关系数据库设计的角度来看,有几种方法可以实现这一点。但是 Entity Framework 4 增加了一些限制,性能是一个大问题。

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 表),因为这会使我们的数据模型太大。

在上面的示例中,产品名称将包含零个或一个短语和一个或多个翻译。我记得,Entity Framework 需要 1 对 1 关系才能在表上具有相同的主键,我不知道这是否与 0 或 1 关系相同,但这可能是上述方法的破坏因素。

我很难找到有关实体框架和多语言数据库/模型设计指南的好信息。我非常感谢建议和指导,重点是良好的设计和最佳性能。

提前致谢!

【问题讨论】:

    标签: entity-framework multilingual


    【解决方案1】:

    鉴于 EF4 的 POCO 支持,我想说您的数据库设计应该与 EF 关系不大,而更多地与良好的多语言设计有关。

    根据文档,EF 支持“零或一”关系。只需将Translation 表中的PhraseId 设为可为空,这将导致0..1 关系。

    【讨论】:

    • 谢谢戴夫。 POCO 并不是真正的问题(我们将使用 POCO),它是我所指的关于约束的 LINQ to Entities 查询。在 3.5 中,外键消失了,这使得创建从 Product 表到 Phrase 表的多个关系变得复杂,例如可翻译的列。我知道 EF4 可以看到外键,但我们还没有尝试过,所以我不知道是否有任何问题。我真的在寻找关于具有 EF4 的理想多语言结构/模型的指导,同时考虑到性能、简单性和可扩展性。再次感谢!
    猜你喜欢
    • 2011-02-20
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多