1

动机:我是一个单独的开发人员,所以我在开发过程中担任各种角色,从编程到 UI 设计再到数据库设计等(这很累)。我们都知道一个人不可能擅长所有事情(或很多事情),而我肯定知道的另一件事是数据库应该经过精心设计和规范化。

假设:假设我是一个非常优秀的面向对象开发人员,并且我按照最佳实践(例如 SOLID)和模式设计我的领域模型。

问题:如果我的领域模型设计得非常好,并且我使用 ORM (例如 Nhibernate、Entity Framework 等)从该模型生成数据库,那么生成的数据库会被规范化吗?

4

1 回答 1

3

生成的数据库将取决于您的实体映射。如果您询问将使用的默认映射,则生成的数据库可能未标准化。

例如,如果默认情况下您有很好的继承层次结构,则 Entity Framework 将使用每层次结构表(TPH) 映射,它通过非规范化 SQL 模式来启用多态性。TPH 使用鉴别器列将层次结构中的所有类型存储在单个表中。TPH 违反了第三范式,因为鉴别器列不是主键的一部分,但某些列依赖于鉴别器值。

于 2013-07-13T22:00:18.403 回答