这可能是一个愚蠢的问题,请原谅。我最近遇到了这个问题:
考虑关系R1(A,B,C)和R2(B,P,Q),其中A,B,C,P,Q是属性集。R1中的B值必须强制存在于R2中。这是一个例子
答:参照完整性约束
我无法区分参照完整性约束和外键约束
为什么我们更喜欢参照完整性约束:
根据reference [1],参照完整性约束是其中所有外键的所有值均有效的数据库状态。
在您的示例中,“ R1中的B的值必须强制存在于R2中”行指示-子表(R2)包含父表(R1)中的所有B值,这意味着R2中的B的所有值均有效-导致参照完整性约束。
再次说明为什么不使用外键约束:
根据参考文献[2],不必总是具有外键来确保参照完整性约束。还有其他方法可以确保完整性约束。
回到您的示例,没有提及外键或主键。该问题仅指示两个表之间的引用。因此,最好选择参照完整性约束而不是外键约束。
参考:
https://www.toolbox.com/tech/big-data/question/difference-between-foreign-key-and-refrential-integrity-constraint-091703/ https://www.mssqltips.com/sqlservertip/4242/ sql-server-referential-integrity-without-foreign-keys /
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句