数据库需要参照完整性(Referential Integrity),核心目的是保证数据之间的关系正确、一致、可信,防止出现“指向不存在的数据”或“关系混乱”的情况。
下面从几个角度说明原因:
关系型数据库通过外键把表联系起来,例如:
订单表.客户ID → 客户表.客户ID参照完整性要求:
订单里的客户ID,必须在客户表中真实存在
如果没有参照完整性,就可能出现:
没有参照完整性时,容易发生:
例如:
参照完整性通常配合:
ON DELETE CASCADE(删除父表时子表联动删除)ON UPDATE CASCADE(更新主键时子表同步)RESTRICT / NO ACTION(禁止破坏关系的操作)这样能确保:
很多业务规则依赖参照完整性:
没有它:
如果数据库不保证参照完整性:
数据库层统一约束,比应用层更可靠。
参照完整性让“表与表之间的关系”成为数据库自己守护的规则,而不是靠程序员小心维护的约定。
如果你愿意,我也可以用一个具体例子(如学生—课程—成绩)来演示没有参照完整性会发生什么。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。