我有一个具有详细实体 DetailB 的主实体 MasterA。我有一个单独的实体 DetailC,它具有 DetailB 的外键。
在我的查询中,我查询了很多 DetailC 列表,但我必须查询与 MasterA 相关的 DetailC。在这种情况下,在 DetailC 和 MasterA 之间建立外键关系以加快查询速度是否有意义。(而不是与 DetailB 进行连接)。在应用程序层,我会确保 DetailC 中的 FK 是同步的(与 DetailB 中指定的内容)。谢谢!
我有一个具有详细实体 DetailB 的主实体 MasterA。我有一个单独的实体 DetailC,它具有 DetailB 的外键。
在我的查询中,我查询了很多 DetailC 列表,但我必须查询与 MasterA 相关的 DetailC。在这种情况下,在 DetailC 和 MasterA 之间建立外键关系以加快查询速度是否有意义。(而不是与 DetailB 进行连接)。在应用程序层,我会确保 DetailC 中的 FK 是同步的(与 DetailB 中指定的内容)。谢谢!
您可以向 DetailC 添加一个字段,该字段将是 MasterA 的外键。但是如果 DetailC 与 DetailB 有关系,而 DetailB 与 MasterA 有关系,那么这个额外的字段将是多余的。严格归一化会说不应该有这样的字段,但是你应该可以放宽归一化规则,只要你能保证数据不会有差异。
我认为这取决于您的数据。
如果您认为 DetailC 和 MasterA 有关联,我认为这样做是有意义的。
或者,如果您担心效率,我认为在设计中总是会发生权衡。在这种情况下,您必须增加数据大小以适应您的速度(或方便)。