0


【MySQL】多表关系的基本学习

](https://img-blog.csdnimg.cn/21dd41dce63a4f2da07b9d879ad0120b.png#pic_center)

🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”

#mermaid-svg-3oES1ZdkKIklfKzq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3oES1ZdkKIklfKzq .error-icon{fill:#552222;}#mermaid-svg-3oES1ZdkKIklfKzq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3oES1ZdkKIklfKzq .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-3oES1ZdkKIklfKzq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3oES1ZdkKIklfKzq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3oES1ZdkKIklfKzq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3oES1ZdkKIklfKzq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3oES1ZdkKIklfKzq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3oES1ZdkKIklfKzq .marker.cross{stroke:#333333;}#mermaid-svg-3oES1ZdkKIklfKzq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3oES1ZdkKIklfKzq .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3oES1ZdkKIklfKzq .cluster-label text{fill:#333;}#mermaid-svg-3oES1ZdkKIklfKzq .cluster-label span{color:#333;}#mermaid-svg-3oES1ZdkKIklfKzq .label text,#mermaid-svg-3oES1ZdkKIklfKzq span{fill:#333;color:#333;}#mermaid-svg-3oES1ZdkKIklfKzq .node rect,#mermaid-svg-3oES1ZdkKIklfKzq .node circle,#mermaid-svg-3oES1ZdkKIklfKzq .node ellipse,#mermaid-svg-3oES1ZdkKIklfKzq .node polygon,#mermaid-svg-3oES1ZdkKIklfKzq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3oES1ZdkKIklfKzq .node .label{text-align:center;}#mermaid-svg-3oES1ZdkKIklfKzq .node.clickable{cursor:pointer;}#mermaid-svg-3oES1ZdkKIklfKzq .arrowheadPath{fill:#333333;}#mermaid-svg-3oES1ZdkKIklfKzq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3oES1ZdkKIklfKzq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3oES1ZdkKIklfKzq .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-3oES1ZdkKIklfKzq .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-3oES1ZdkKIklfKzq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3oES1ZdkKIklfKzq .cluster text{fill:#333;}#mermaid-svg-3oES1ZdkKIklfKzq .cluster span{color:#333;}#mermaid-svg-3oES1ZdkKIklfKzq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3oES1ZdkKIklfKzq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
at large 大多数,未被捕获的

文章目录

多表关系
多表关系含义:

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为3种:

  • 一对多
  • 多对多
  • 一对一

一对多(多对一)

案例:部门与员工的关系

  • 一个部门可以对应多个员工,一个员工对应一个部门
  • 实现:在多的一方建立外键,指向一方的主键

在这里插入图片描述

多对多

案例:学生与课程的关系

  • 一个学生可以选修多门课程,一门课程可供多个学生选择
  • 实现:建立第三章中间表,中间表至少包含两个外键,分别关联两方主键。在这里插入图片描述

首先我们先创建好这三张表

--        ---------------- 多表关系 演示------------------------ 多对多 ----------------------- 创建学生表createtable student(
    id intauto_incrementprimarykeycomment' 主键ID',
    name varchar(10)comment'姓名',novarchar(10)comment'学号')comment'学生表';insertinto student values(null,'黛绮丝','2000100101'),(null,'谢逊','2000100102'),(null,'殷天正','2000100103'),(null,'韦一笑','2000100104');-- 创建课程表createtable course(
    id intauto_incrementprimarykeycomment'主键ID',
    name varchar(10)comment'课程名称')comment'课程表';insertinto course values(null,'Java'),(null,'PHP'),(null,'MySQL'),(null,'Hadoop');-- 创建中间表createtable student_course(
    id intauto_incrementcomment'主键'primarykey,
    studentid intnotnullcomment'学生ID',
    courseid intnotnullcomment'课程ID',constraint fk_courseid foreignkey(courseid)references course (id),constraint fk_studentid foreignkey(studentid)references student(id))comment'学生课程中间表';insertinto  student_course values(null,1,1),(null,1,2),(null,1,3),(null,2,2),(null,2,3),(null,3,4);

学生表
课程表
中间表
然后,我们可以通过中间表进行可视化界面展示。
在这里插入图片描述
在这里插入图片描述


一对一

案例:用户与用户详情的关系

  • 一对一关系,多用于单表才拆分,将一张表的基础字段放到一张表中,其它详情字段放在另一张表中,以提升操作效率。
  • 实现:在任意一方加入外键,关联另一方的主键,并且设置外键为唯一的(UNIQUE)在这里插入图片描述
    首先,我们先创建用户信息表
    ```

-- ------------------一对一--------------------------------------createtable tb_user(
id intauto_incrementprimarykeycomment'主键ID',
name varchar(10)comment'姓名',
age intcomment'年龄',
gender char(1)comment'1:男 , 2: 女',
phone char(11)comment'手机号')comment'用户基本信息表';createtable tb_user_edu(
id intauto_incrementprimarykeycomment'主键ID',
degree varchar(20)comment'学历',
major varchar(20)comment'专业',
primaryschool varchar(50)comment'小学',
middleschool varchar(50)comment'中学',
university varchar(50)comment'大学',
userid intuniquecomment'用户ID',constraint fk_userid foreignkey(userid)references tb_user(id))comment'用户教育信息表';insertinto tb_user(id, name, age, gender, phone)VALUES(null,'黄渤',45,'1','18800001111'),(null,'冰冰',35,'2','18800002222'),(null,'码云',55,'1','18800008888'),(null,'李彦宏',50,'1','18800009999');insertinto tb_user_edu(id, degree, major, primaryschool, middleschool, university, userid)VALUES(null,'本科','舞蹈','静安区第一小学','静安区第一中学','北京舞蹈学院',1),(null,'硕士','表演','朝阳区第一小学','朝阳区第一中学','北京电影学院',2),(null,'本科','英语','杭州市第一小学','杭州市第一中学','杭州师范大学',3),(null,'本科','应用数学','阳泉第一小学','阳泉区第一中学','清华大学',4);

```

用户基本信息表

用户教育信息表

在这里插入图片描述
用户教育信息表中的id关联的就是用户信息表的主键,因为我们给userid添加了唯一约束,所以用户教育信息表中的一条记录就对应一条用户基本信息。
](https://img-blog.csdnimg.cn/0ee6c4ec414740b0a0404c5161cdadc7.gif#pic_center)

](https://img-blog.csdnimg.cn/cc002cbd5c414c5393e19c5e0a0dbf20.gif#pic_center#pic_center)

标签: mysql 数据库 学习

本文转载自: https://blog.csdn.net/Aileenvov/article/details/136134047
版权归原作者 Aileen_0v0 所有, 如有侵权,请联系我们删除。

“【MySQL】多表关系的基本学习”的评论:

还没有评论