关系型数据库表关系 作者:马育民 • 2020-05-16 09:38 • 阅读:10069 # 介绍 表与表的关系有以下几种: - 一对一 - 一对多(多对一) - 多对多 # 1. 一对一 [![](https://www.malaoshi.top/upload/pic/mybatis/QQ20210125213832.png)](https://www.malaoshi.top/upload/pic/mybatis/QQ20210125213832.png) A表的 **一条记录** 对应 B表的 **一条记录** 应用场景不多,因为可以创建成一张表 ### 案例: 某表的字段过多,比如有50多个字段,经过分析这些字段有20个是常用字段,另外30个是不常用字段,所以将其拆分成2个表,**主表** 保存常用字段,**从表** 保存不常用字段 ### 表设计: 1. 主表的主键 与 从表主键 相同 2. 在从表中创建一个字段,保存主表的主键 # 2. 一对多(多对一) [![](https://www.malaoshi.top/upload/0/0/1EF5X1huQ4Ak.png)](https://www.malaoshi.top/upload/0/0/1EF5X1huQ4Ak.png) [![](https://www.malaoshi.top/upload/0/0/1EF5X26Fkcqo.png)](https://www.malaoshi.top/upload/0/0/1EF5X26Fkcqo.png) A表的 **一条记录** 对应 B表的 **多条记录**,但是,B表的 **一条记录** 对应 A表的 **一条记录** A表 就是 **一对多** 中的 **一** B表 就是 **一对多** 中的 **多** 应用场景最多 ### 案例 1. 部门表 与 员工表 2. 作者表 与 文章表 3. 班级表 与 学生表 4. 用户表 与 收货地址表 ### 表设计: 在 **多的一方** 创建一个字段,保存 **一的一方** 的主键 student表增加teacher_id字段,如下: |sid |sname |teacher_id | | ------------ | ------------ | ------------ | |1 |李雷 |高老师的id | |2 |韩梅梅 |高老师的id | |3 |川普 |高老师的id | ### 主表、从表 `一对多` 中,`一` 方称之为 `主表`,`多` 方称之为 `从表` `班主任` 与 `学生` 的关系是 `一对多`,所以 `班主任` 是 `主表`,`学生` 是 `从表` ### 多对一 与 `一对多` 是一个含义,就看从哪个方向说 `班主任` 与 `学生` 的关系是 `一对多` `学生` 与 `班主任` 的关系是 `多对一` # 3. 多对多 [![](https://www.malaoshi.top/upload/0/0/1EF5X1tzmsgK.png)](https://www.malaoshi.top/upload/0/0/1EF5X1tzmsgK.png) A表的 **一条记录** 对应 B表的 **多条记录**,B表的 **一条记录** 也能对应 A表中的 **多条记录** 应用场景较多 ### 案例 3. 学生表 与 专业表 2. 分类表 与 电影表 ### 表设计 需要创建 **中间表**,中间表至少两个字段,分别保存两表的主键 [![](https://www.malaoshi.top/upload/pic/mybatis/QQ20201107224549.png)](https://www.malaoshi.top/upload/pic/mybatis/QQ20201107224549.png) 原文出处:http://malaoshi.top/show_1EF5X28kA8Jr.html