标准化类设计是否导致规范化数据库设计

时间:2013-07-13 21:51:17

标签: database oop database-design orm normalization

动机:我是一名独立开发人员,因此我在开发过程中担任各种角色,从编程到用户界面设计再到数据库设计等。(这非常令人筋疲力尽) 。我们都知道,一个人不能擅长(或许多事情),而我确切知道的另一件事是数据库应该设计得很好并且标准化。

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

问题:如果我的域模型设计得很好,我使用ORM (例如Nhibernate,Entity Framework等)从该模型生成数据库,生成的数据库是否会被标准化?

1 个答案:

答案 0 :(得分:3)

生成的数据库将取决于您的实体映射。如果您询问将要使用的默认映射,则生成的数据库可能无法规范化。

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