MySQL——多表操作(二)操作关联表(1)关联关系

在实际开发中,需要根据实体的内容设计数据表,实体间会有各种关联关系。所以根据实体设计的数据表之间也存在着各种关联关系,MySQL中数据表的关联关系有种,具体如下。

1.多对一

多对一是数据表中最常见的一种关系。比如,员工与部门之间的关系,一个部门可以有多个员工,而一个员工不能属于多个部门,也就是说部门表中的一行在员工表中可以有许多匹配行,但员工表中的一行在部门表中只能有一个匹配行。

我们知道表之间的关系是通过外键建立的。在多对一的表关系中,应该将外键建在多的一方,否则会造成数据的冗余

2. 多对多

多对多也是数据表中的一种关系。比如学生与课程之间的关系,一个学生可以选择多门课程,当然一门课程也供多个学生选择,也就是说学生表中的一行在课程表中可以有许多匹配行,课程表中的一行在学生表中也有许多匹配行。

通常情况下,为了实现这种关系需要定义一张中间表(称为连接表),该表会存在两个外键,分别参照课程表和学生表。在多对多的关系中,需要注意的是,连接表的两个外键都是可以重复的,但是两个外键之间的关系是不能重复的,所以这两个外键又是连接表的联合主键。

3. 一对一

一对一关系在实际生活中比较常见,例如人与身份证之间就是一对一的关系,一个人对应一张身份证,一张身份证只能匹配一个人。那么,一对一关系的两张表如何建外键?

首先,要分清主从关系。从表需要主表的存在才有意义,身份证需要人的存在才有意义。因此人为主表,身份证为从表。要在身份证表中建立外键。由实际经验可知,份证中的外键必须是非空唯一的,因此通常会直接用从表(表身份证)中的主键作为外键。

需要注意的是,这种关系在数据库中并不常见,因为以这种方式存储的信息通常会放在一个表中。在实际开发中,一对一关联关系可以应用于以下几方面。

(1)分割具有很多列的表。

(2)由于安全原因而隔离表的一部分。

(3)保存临时的数据,并且可以毫不费力地通过删除该表而删除这些数据。

相关推荐
202321336054 刘12 分钟前
Linux常用命令分类整理
linux·运维·数据库
Q741_14714 分钟前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(2) 作答语言:C/C++ 哈夫曼编码 LRU
c语言·数据库·c++·算法·笔试·哈夫曼编码·哈夫曼树
齐 飞23 分钟前
快速删除mysql表中所有数据-TRUNCATE TABLE
数据库·mysql
想摆烂的不会研究的研究生25 分钟前
每日八股——Redis(2)
数据库·redis·缓存
optimistic_chen28 分钟前
【Redis系列】主从复制
linux·数据库·redis·缓存·中间件·命令行·主从复制
一个天蝎座 白勺 程序猿32 分钟前
KingbaseES 处理 PL/SQL 运行时错误全解析:从异常捕获到异常处理的实践指南
数据库·sql·oracle·kingbasees
leo_23240 分钟前
表&表结构--SMP(软件制作平台)语言基础知识之三十三
数据库·开发工具·表结构·smp(软件制作平台)·应用系统
C***11501 小时前
Spring TransactionTemplate 深入解析与高级用法
java·数据库·spring
计算机学姐1 小时前
基于SpringBoot的汉服租赁系统【颜色尺码套装+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
+VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue建筑材料管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计