文章目录

  • 1、概念
  • 2、理解
  • 3、添加外键时需要注意的规则
  • 4、navicat for mysql中设置外键
  • 5、数据表关系图的创建

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

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

结果:

可以再调整一下位置

mysql设置外键并一键生成数据表关系图相关推荐

  1. MySQL Workbench生成数据表关系图

    步骤 1.打开File下的New Model 2.选择Add New Diagram 3.点击Database下的Reverse Engineer Database 4.进行数据库连接 5.选择需要生 ...

  2. mysql 设置外键

    数据库 mysql 建立外键的前提:本表的列必须与外键类型相同(外键 必须是外表主键). 外键作用: 使两张表形成关联,外键只能引用外表中的列的值! 指定主键关键字: foreign key(列名) ...

  3. mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

    问题描述:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 解决方法: 在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sq ...

  4. mysql设置外键_mysql怎么增加外键

    mysql增加外键的方法:1.在CREATE TABLE语句中,通过FOREIGN KEY关键字来添加外键:2.在ALTER TABLE语句中,通过ADD和FOREIGN KEY关键字来添加外键. M ...

  5. 解决:Navicat for mysql 设置外键出错

    1 看下是不是外键允许为空,不唯一等约束条件不满足 2 或者外键设置删除时为 restrict 1. 两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10 ...

  6. python做值班表预测_Django model一张表中两个字段设置外键参考另一张表两个字段...

    class products(models.Model): MODE_CHOICES=(('week','周'),('day','日')) productname=models.CharField(m ...

  7. ERP开发-生产模块-数据表关系图

    主数据关系图 业务数据关系图 ​ 个人公众号:总钻风来巡山,欢迎关注~~~ 个人公众号

  8. 教务管理系统数据表关系图_浙江工商大学教务处

    专业选修课补选课通知(2020-2021学年第二学期) 发布时间: 2020/11/13 已被浏览 14 次 各学院.全校本科生: 2020-2021学年第二学期专业选修课第一轮网上选课已结束,请各位 ...

  9. MySQL删除外键、增加外键及删除主键、增加主键

    目录 一.MySQL删除外键 二.MySQL增加外键 三.MySQL删除主键 四.MySQL增加主键 一.MySQL删除外键 格式: alter table 表名 drop foreign key 外 ...

最新文章

  1. BeanUtils解决日期问题
  2. 【Latex】怎么写中文?
  3. new Random().Next(1, 100); 多线程同时执行结果很高概率相同,
  4. 导师都有哪些“秘密”没有告诉你?
  5. python各种数据类型的常用方法_Python之数据类型的常用方法
  6. centos利用nexus搭建局域网docker私有仓库
  7. mex文件用matlab能打开吗,matlab中mex文件编译运行的问题
  8. 云端之战:Thomas Kurian离职,Java 11趋向收费,Ellison豪赌ERP和云数据库
  9. Java 堆内存是线程共享的!面试官:你确定吗?
  10. linux 分区怎样缩小,如何缩小磁盘分区大小
  11. 大数据求中位数(插值计算)
  12. 什么是零信任?零信任的好处有哪些?
  13. ubuntu 16.10 install 搜狗输入法
  14. 为什么?------”人的天性总是高估自己,而低估别人“
  15. ZYNQ 或ZYNQ Ultrascale PS/PL交互
  16. net-java-php-python-篮球新闻网站计算机毕业设计程序
  17. python中strip的用法
  18. weblogic Unable to obtain lock on
  19. 《游戏开发者》调查:iOS和Unity是游戏开发者的最爱
  20. maskrcnn-benchmar 代码详解之 fpn.py

热门文章

  1. vi使用手册(zt)
  2. 【动手学MVG】ICP算法原理和代码实现
  3. 《迅雷链精品课》第七课:以太坊数据存储分析
  4. 腾讯云不重启修改主机名
  5. (轉貼)《程序员》推荐C++ 图书三人谈 (C/C++)
  6. 索尼笔记本E系列,关闭触摸板
  7. Failed to connect to server(code:1006)
  8. 阿里云大数据开发一面面经,已过,面试题已配答案
  9. 【Linux 内核设计的艺术】从开机加电到执行 main 函数之前的过程
  10. pdf2html java_pdf2HtmlEX的使用