规范化和关系

时间:2012-10-17 06:48:20

标签: database database-design

我有一个主实体MasterA,它有一个详细实体DetailB。我有一个单独的实体DetailC,它有一个DetailB的外键。

在我的查询中,我查询了很多DetailC列表,但我必须查询与MasterA相关的DetailC。在这种情况下,在DetailC和MasterA之间建立外键关系以加快查询是有意义的。 (而不是与DetailB进行连接)。在应用层,  我会确保DetailC中的FK同步(使用DetailB中指定的内容)。 谢谢!

2 个答案:

答案 0 :(得分:1)

我认为这取决于您的数据。

如果您认为DetailC和MasterA有相关内容,我认为这样做是有意义的。

或者如果你担心效率,我认为在设计中权衡总是会发生。在这种情况下,您必须增加数据大小以与您的速度(或方便)交换。

答案 1 :(得分:1)

您可以向DetailC添加一个字段,该字段是MasterA的外键。但是如果DetailC与DetailB有关系并且DetailB与MasterA有关系,那么这个额外的字段将是多余的。严格的规范化会说不应该存在这样的字段,但只要您能保证数据中不存在差异,您就应该能够放宽规范化规则。