参照完整性(Referential Integrity)是关系数据库中用于维护表与表之间数据一致性的重要机制,主要通过外键(Foreign Key)约束来实现。
下面从“是什么、怎么保证、常见规则、举例”几个方面说明它如何保证数据一致。
参照完整性要求:
一个表中的外键值,必须是另一个表(被参照表)中已存在的主键值,或者为空(取决于约束定义)。
通俗地说:
“子表里的引用,必须在父表里找得到对应记录。”
当向子表插入一条记录:
✅ 例:订单表的 customer_id 必须在客户表中存在
当修改:
当删除父表记录时,数据库按外键规则处理:
| 删除规则 | 行为 |
|---|---|
| RESTRICT / NO ACTION | 有子记录时拒绝删除 |
| CASCADE | 同时删除子表相关记录 |
| SET NULL | 将子表外键设为 NULL |
| SET DEFAULT | 设为默认值 |
没有参照完整性时可能出现:
参照完整性从数据库层面强制禁止这种情况。
CUSTOMER(customer_id PK, name)
ORDER(order_id PK, customer_id FK → CUSTOMER.customer_id)
INSERT INTO ORDER VALUES (1, 999);
❌ 报错:customer_id = 999 不存在
DELETE FROM CUSTOMER WHERE customer_id = 1;
参照完整性通过外键约束,确保“子表引用必须合法”,从而从机制上防止数据不一致和逻辑错误。
如果你愿意,我也可以讲:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。