主键实现 唯一
外键实现 完整
例如有 学校表 班级表 学生表
班级表里面有 所属学校, 并创建了外键约束
学生表里面有 所属班级, 并创建了外键约束
这样创建完毕以后,
例如我插入了下面这样的数据.
学校: 某某大学
班级: 2012级1班; 2012级2班; 2012级3班;
学生: 张三(1班); 李四(2班);王五(3班)
数据创建好以后。
如果没有外键的话
我删除 学校 某某大学
那么 班级里面的数据就有问题了。
去查询一下 班级的所属学校, 是有数据的, 但是去查询学校, 发现学校不存在了。
我删除 2012级3班;
那么 王五 的数据就有问题了。
去查询一下, 显示 王五所在班级为 3班, 但是班级表里面没这个记录。
这样就导致数据不完整了。
如果有外键约束的话。
我删除 学校 某某大学
默认情况下, 数据库就会拒绝我的本次操作, 并提示我有外键的数据存在, 不能删除
我删除 2012级3班。
默认情况下, 数据库就会拒绝我的本次操作, 并提示我有外键的数据存在, 不能删除
我需要把 王五所在班级 从3班 修改为 2班 以后,
确保 2012级3班 下面没有学生了, 我才能删除 2012级3班
参照完整性规则有以下几种方式:
1. 数据库 外键
2. 数据库 触发器
3. 数据库 存储过程或函数类
4. 程序实现完整性
建议使用 2,3,