SQL基本表的创建中是通过什么实现参照完整性规则的?

2025-07-14 23:26:49
推荐回答(2个)
回答1:

主键实现 唯一
外键实现 完整

例如有 学校表 班级表 学生表

班级表里面有 所属学校, 并创建了外键约束
学生表里面有 所属班级, 并创建了外键约束

这样创建完毕以后,

例如我插入了下面这样的数据.

学校: 某某大学
班级: 2012级1班; 2012级2班; 2012级3班;
学生: 张三(1班); 李四(2班);王五(3班)

数据创建好以后。
如果没有外键的话

我删除 学校 某某大学
那么 班级里面的数据就有问题了。
去查询一下 班级的所属学校, 是有数据的, 但是去查询学校, 发现学校不存在了。

我删除 2012级3班;
那么 王五 的数据就有问题了。
去查询一下, 显示 王五所在班级为 3班, 但是班级表里面没这个记录。

这样就导致数据不完整了。

如果有外键约束的话。
我删除 学校 某某大学
默认情况下, 数据库就会拒绝我的本次操作, 并提示我有外键的数据存在, 不能删除

我删除 2012级3班。
默认情况下, 数据库就会拒绝我的本次操作, 并提示我有外键的数据存在, 不能删除

我需要把 王五所在班级 从3班 修改为 2班 以后,
确保 2012级3班 下面没有学生了, 我才能删除 2012级3班

回答2:

参照完整性规则有以下几种方式:
1. 数据库 外键
2. 数据库 触发器
3. 数据库 存储过程或函数类
4. 程序实现完整性
建议使用 2,3,