](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)
版权归原作者 Aileen_0v0 所有, 如有侵权,请联系我们删除。