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、数据表关系图的创建

前提是要先设置好主键外键,生成时才会把这个关系呈现出来,不然后面还要继续添加外键,就麻烦一点。
在这里插入图片描述

结果:
在这里插入图片描述
可以再调整一下位置

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐