史上最简单的 MySQL 教程(十四)「关系」
史上最简单的 MySQL 教程(十四)「关系」
关系
在数据库中,将实体与实体的关系反应到表的设计上来,可以细分为 3 种,分别为:一对一(1:1)
,一对多(1:N)
(或多对一(N:1)
)和多对多(N:N)
。
在此,所有的关系都是指表与表之间的关系。
一对一
一对一,即一张表的一条记录只能与另外一张表的一条记录相对应,反之亦然。
例如,咱们设计一张「个人信息表」,其字段包含:姓名、性别、年龄、身高、体重、籍贯和居住地等。
如上表所示,基本满足咱们的要求,其中姓名、性别和年龄属于常用数据,但是身高、体重、籍贯和居住地为不常用数据。如果每次查询都要查询所有数据的话,那么不常用数据就会影响效率,而且又不常用。因此,咱们可以将常用的数据和不常用的数据分离存储,即分为两张表,例如:
表 1:常用数据
表 2:不常用数据
如上面表1
和表2
所示,通过字段ID
,表1
中的一条记录只能匹配表2
中的一条记录,反之亦然,这就是一对一
的关系。
一对多/多对一
一对多,即一张表中的记录可以对应另外一张表中的多条记录,但是反过来,另外一张表中的一条记录只能对应第一张表中的一条记录。
例如,咱们设计「国家城市表」,其包含两个实体,即国家和城市。
表 3:国家表
表 4:城市表
如上面表3
和表4
所示,通过字段国家
,表3
中的一条记录可以匹配表4
中的多条记录,但反过来,表4
中的一条记录只能匹配表3
中的一条记录,这就是典型的一对多
的关系。
多对多
多对多,即一张表中的记录可以对应另外一张表中的多条记录,反过来,另外一张表中的一条记录也可以对应第一张表中的多条记录。
例如,咱们设计「教师学生表」,其包含两个实体,即教师和学生。
表 5:教师表
表 6:学生表
观察上面的表5
和表6
,咱们会发现:表5
和表6
的设计满足了实体的属性,但没有维护实体之间的关系,即一个老师教过多个学生,一个学生也被多个老师教过。但是无论咱们在表5
中还是在表6
中增加字段,都会出现一个问题,那就是:该字段要保存多个数据,并且还是与其他表有关系的字段,不符合设计规范。因此,咱们可以再设计一张「中间表」,专门用来维护表5
和表6
的关系。
表 7:中间表
观察上面的表5
、表6
和表7
,咱们会发现增加表7
之后,咱们维护表5
和表6
的关系更加方便啦!无论是想从表5
通过表7
查到表6
,还是想从表6
通过表7
查到表5
,都非常容易啦!这就是典型的多对多
的关系。
———— ☆☆☆ —— 返回 -> 史上最简单的 MySQL 教程 <- 目录 —— ☆☆☆ ————
相关文章
- CentOS和Windows下配置MySQL远程访问的教程
- mysql导入数据乱码的解决
- 史上最简单的 MySQL 教程(十三)「索引」
- 史上最简单的 MySQL 教程(十一)「列类型 之 字符串型」
- 史上最简单的 MySQL 教程(十)「列类型 之 日期时间型」
- 史上最简单的 MySQL 教程(七)「列类型」
- 史上最简单的 MySQL 教程(五)「SQL 基本操作 之 表操作」
- 史上最简单的 MySQL 教程(二十六)「数据备份与还原」
- 史上最简单的 MySQL 教程(一)「数据库」
- mysql教程-触发器
- 史上最完整的MySQL注入
- MySQL存储过程
- Mysql免安装版配置教程和常用命令图
- PostgreSQL与MySQL比较
- Mysql高效插入/更新数据
- MySQL特异功能之:Impossible WHERE noticed after reading const tables
- Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
- win10下MySQL安装教程(MySql-8.0.26超级详细)
- CentOS 7 安装mysql 8 教程
- 玩转Mysql系列 - 第22篇:mysql索引原理详解
- MySQL卸载教程(详细)
- MySQL存储过程-把一个查询的结果,做为变量,更新另一张表
- mysql主从切换步骤
- mysql触发器的作用及语法
- 软件测试技能,JMeter压力测试教程,JDBC配置连接mysql数据库(十)
- Mysql group replication复制原理
- WIN10安装MYSQL教程
- setup airflow on MySQL
- 宝塔Linux面板安装教程(+Mysql)
- 【mysql】MySql日期相关sql