1、概念
主键是能确定一条记录的唯一标识。 外键用于与另一张表的关联。. 是能确定另一张表记录的字段,用于保持数据的一致性。
2、理解
有两张表
- 学生表(学号、姓名、性别、班级、年级)
- 班级表(班号、班主任)
每个学生都有一个学号,而且不会有重复的,即学号可以标识唯一的一个学生,所以学号可以作为学生表的主键。 同理,班号是班级表的主键。
学生表中有“班级”属性,对应的是班级表中的班号,而班号是班级表的主键。也就是说一个表的一个属性是另一个表的主键,这个属性就可设置为外键。一个表的外键可以有多个,即可以关联多个其他表格,如:再来一个年级表时。
3、添加外键时需要注意的规则
引自:https://blog.csdn.net/z1826378013/article/details/79599025
1、添加外键的数据库引擎必须为InnoDB
2、关联的字段数据类型必须一样
3、知道表与表之间的主从关系,需要在从表中添加外键(像上面例子中学生表是从表,班级表是主表,所以在学生表中添加)
4、从表中的关联字段数据,在主表中需要是唯一的
5、创建外键的时候,需要先建立索引。索引的目的是为了更快地进行搜寻。当然,如果没有在主表里面建立索引,那么可能在从表中创建外键的时候出现错误。(我自己没有建立索引)
6、如果有多张表需要创建外键,那么外键的名字也必须是唯一的,且不区分大小写。(根据下面参考视频中的up主的方法,可以“fk_从表名_主表名",这样子可以确保唯一性,也能清楚知道这个外键是谁谁的,如”fk_student_class“)
4、navicat for mysql中设置外键
参考视频: https://www.bilibili.com/video/BV1oi4y1b7nK?from=search&seid=7053261436863224077&spm_id_from=333.337.0.0
(1)选定从表(如:student),点击"设计表“ 就能看到这样: (2)点击”外键“ (3)填写信息
- 名:fk_从表名_主表名(如”fk_student_class)
- 字段:从表里要进行关联的字段(如:学生表中的class_id)
- 被引用的模式:主表(也就是班级表)所在的数据库。
- 被引用的表(父):也就是我们说的主表啦(class)
- 被引用的字段:主表里要进行关联的字段,一般是主表的主键(如:班级表中的“id”)
- 删除时:一般可以不填,直接保存,就默认是RESTRICT
- 更新时:一般可以不填,直接保存,就默认是RESTRICT
(4)点击“保存”
5、数据表关系图的创建
前提是要先设置好主键外键,生成时才会把这个关系呈现出来,不然后面还要继续添加外键,就麻烦一点。
结果: 可以再调整一下位置
|