我有一个DB,其中有4个表。
A - > B - > C - > d
目前我的方式是,A的主键是B中的外键.B将拥有它自己的主键,它是C等中的外键等。
但是,如果没有B,C不能链接到A.
问题是,我的程序的核心功能涉及从A和D中提取匹配条目。
我是否应该在D中包含A的主键
这样做将产生不必要的数据复制'coz A-> B-> C-> D是层次结构。 看看D看起来像什么。
答案 0 :(得分:1)
如果你把所有D-s与给定的A相关联,我会保持它的正常化。
但是如果你想要这样的Ds的特定子集并且之前很容易知道,但是后来耗费时间(例如,如果你想从最新的B获得最新C的所有D),我会在某处预先存储这个快捷方式。 / p>
它不必在D本身(特别是如果你不希望所有D-s与A连接)。
如果您想这样做以便于查询和编写查询,请考虑查看。
如果您想这样做以提高性能,请尝试所有内容并进行衡量。 (而且我不是SQL性能调优方面的专家,所以除此之外我没有具体的建议)