**参照完整性约束(Referential Integrity Constraint)**是关系数据库中用来维护表与表之间数据一致性的重要规则。要理解它,可以从“为什么需要它”“它是什么”“怎么工作”三个层面来看。
在关系数据库中,数据通常分散在多个表中,表与表之间通过**外键(Foreign Key)**建立联系。
例如:
学生表(学号, 姓名)选课表(学号, 课程号)如果 选课表 里出现一个“学号=999”的记录,但 学生表 里根本没有学号 999 的学生,这就出现了脏数据:选课记录“指向不存在的学生”。
参照完整性就是用来防止这种问题的。
参照完整性约束规定:
如果一个表(子表)中的某列是另一个表(父表)主键的外键,那么子表中该列的值,必须是父表中已存在的主键值,或者为 NULL(如果允许)。
简单说:
学生表选课表学号 是主键学号 是外键,参照学生表当父表数据被修改或删除时,数据库通常支持以下策略:
| 策略 | 含义 |
|---|---|
| RESTRICT / NO ACTION | 若有子表引用,禁止删除或修改父表记录 |
| CASCADE | 父表删除/更新时,子表同步删除/更新 |
| SET NULL | 父表删除/更新时,子表外键设为 NULL |
学生表
学号 | 姓名
101 | 张三
102 | 李四
选课表
学号 | 课程
101 | 数学 ✅ 合法
103 | 英语 ❌ 违反参照完整性(103不存在)
参照完整性约束,就是保证“外键必须指向真实存在的主键”,从而维护数据库表之间的逻辑一致性和可信性。
如果你愿意,我也可以用 SQL 示例 或 ER 图角度 再帮你讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。