1 外键的定义
- 外键是某个表中的一列,它包含在另一个表的主键中。
- 外键也是索引的一种,是通过一张表中的一列指向另一张表中的主键,来对两张表进行关联。
- 一张表可以有一个外键,也可以存在多个外键,与多张表进行关联。
2 外键的作用
外键的主要作用是保证数据的一致性和完整性,并且减少数据冗余;
阻止执行
- 从表插入新行,其外键值不是主表的主键值便阻止插入。
- 从表修改外键值,新值不是主表的主键值便阻止修改。
- 主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表的相关行)。
- 主表修改主键值,旧值在从表里存在便阻止修改(要想修改,必须先删除从表的相关行)。
3 级联操作
由于上面条件不能执行级联操作,所以要想更新或者删除主表外键数据的同时删除从表的数据,那么需要设置;
3.1 级联更新
constraint 外键名称 foreign key 外键列名称 references 主表名称 on update cascade;
3.2 级联删除
constraint 外键名称 foreign key 外键列名称 references 主表名称 on delete cascade;
4 数据库设计
多表之间的关系:
1.一对一
比如:人和身份证
一个人只有一张身份证,一张身份证被一个人拥有;
2.一对多(多对一)
比如:部门和员工
一个部门有多个员工,一个员工只能有一个部门;
3. 多对多
比如:学生和课程
一个学生可以选择多门课程,一门课程可以有多个学生;
要想完成多对多的关系,我们需要借助第三张表,两张表的主键分别作为第三张表的外键;