mysql设置外键并一键生成数据表关系图
文章目录
- 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设置外键并一键生成数据表关系图相关推荐
- MySQL Workbench生成数据表关系图
步骤 1.打开File下的New Model 2.选择Add New Diagram 3.点击Database下的Reverse Engineer Database 4.进行数据库连接 5.选择需要生 ...
- mysql 设置外键
数据库 mysql 建立外键的前提:本表的列必须与外键类型相同(外键 必须是外表主键). 外键作用: 使两张表形成关联,外键只能引用外表中的列的值! 指定主键关键字: foreign key(列名) ...
- mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
问题描述:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 解决方法: 在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sq ...
- mysql设置外键_mysql怎么增加外键
mysql增加外键的方法:1.在CREATE TABLE语句中,通过FOREIGN KEY关键字来添加外键:2.在ALTER TABLE语句中,通过ADD和FOREIGN KEY关键字来添加外键. M ...
- 解决:Navicat for mysql 设置外键出错
1 看下是不是外键允许为空,不唯一等约束条件不满足 2 或者外键设置删除时为 restrict 1. 两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10 ...
- python做值班表预测_Django model一张表中两个字段设置外键参考另一张表两个字段...
class products(models.Model): MODE_CHOICES=(('week','周'),('day','日')) productname=models.CharField(m ...
- ERP开发-生产模块-数据表关系图
主数据关系图 业务数据关系图 个人公众号:总钻风来巡山,欢迎关注~~~ 个人公众号
- 教务管理系统数据表关系图_浙江工商大学教务处
专业选修课补选课通知(2020-2021学年第二学期) 发布时间: 2020/11/13 已被浏览 14 次 各学院.全校本科生: 2020-2021学年第二学期专业选修课第一轮网上选课已结束,请各位 ...
- MySQL删除外键、增加外键及删除主键、增加主键
目录 一.MySQL删除外键 二.MySQL增加外键 三.MySQL删除主键 四.MySQL增加主键 一.MySQL删除外键 格式: alter table 表名 drop foreign key 外 ...
最新文章
- BeanUtils解决日期问题
- 【Latex】怎么写中文?
- new Random().Next(1, 100); 多线程同时执行结果很高概率相同,
- 导师都有哪些“秘密”没有告诉你?
- python各种数据类型的常用方法_Python之数据类型的常用方法
- centos利用nexus搭建局域网docker私有仓库
- mex文件用matlab能打开吗,matlab中mex文件编译运行的问题
- 云端之战:Thomas Kurian离职,Java 11趋向收费,Ellison豪赌ERP和云数据库
- Java 堆内存是线程共享的!面试官:你确定吗?
- linux 分区怎样缩小,如何缩小磁盘分区大小
- 大数据求中位数(插值计算)
- 什么是零信任?零信任的好处有哪些?
- ubuntu 16.10 install 搜狗输入法
- 为什么?------”人的天性总是高估自己,而低估别人“
- ZYNQ 或ZYNQ Ultrascale PS/PL交互
- net-java-php-python-篮球新闻网站计算机毕业设计程序
- python中strip的用法
- weblogic Unable to obtain lock on
- 《游戏开发者》调查:iOS和Unity是游戏开发者的最爱
- maskrcnn-benchmar 代码详解之 fpn.py
热门文章
- vi使用手册(zt)
- 【动手学MVG】ICP算法原理和代码实现
- 《迅雷链精品课》第七课:以太坊数据存储分析
- 腾讯云不重启修改主机名
- (轉貼)《程序员》推荐C++ 图书三人谈 (C/C++)
- 索尼笔记本E系列,关闭触摸板
- Failed to connect to server(code:1006)
- 阿里云大数据开发一面面经,已过,面试题已配答案
- 【Linux 内核设计的艺术】从开机加电到执行 main 函数之前的过程
- pdf2html java_pdf2HtmlEX的使用