正常化还是不正常化?

时间:2011-06-06 07:06:21

标签: foreign-keys normalization hierarchy

我有一个DB,其中有4个表。

A - > B - > C - > d

目前我的方式是,A的主键是B中的外键.B将拥有它自己的主键,它是C等中的外键等。

但是,如果没有B,C不能链接到A.

问题是,我的程序的核心功能涉及从A和D中提取匹配条目。

我是否应该在D中包含A的主键

这样做将产生不必要的数据复制'coz A-> B-> C-> D是层次结构。 看看D看起来像什么。Proposed Table D

1 个答案:

答案 0 :(得分:1)

如果你把所有D-s与给定的A相关联,我会保持它的正常化。

但是如果你想要这样的Ds的特定子集并且之前很容易知道,但是后来耗费时间(例如,如果你想从最新的B获得最新C的所有D),我会在某处预先存储这个快捷方式。 / p>

它不必在D本身(特别是如果你不希望所有D-s与A连接)。

如果您想这样做以便于查询和编写查询,请考虑查看。

如果您想这样做以提高性能,请尝试所有内容并进行衡量。 (而且我不是SQL性能调优方面的专家,所以除此之外我没有具体的建议)