您的位置:首页 > 数据库 > MySQL

史上最简单的 MySQL 教程(十八)「关系」

2017-05-24 12:53 3459 查看

关系

在数据库中,将实体与实体的关系反应到表的设计上来,可以细分为 3 种,分别为:一对一
(1:1)
,一对多
(1:N)
(或多对一
(N:1)
)和多对多
(N:N)


在此,所有的关系都是指表与表之间的关系。

一对一

一对一,即一张表的一条记录只能与另外一张表的一条记录相对应,反之亦然

例如,咱们设计一张「个人信息表」,其字段包含:姓名、性别、年龄、身高、体重、籍贯和居住地等。

ID姓名性别年龄身高体重籍贯居住地
1Charies1818275中国北京
2Swift1817250美国纽约
如上表所示,基本满足咱们的要求,其中姓名、性别和年龄属于常用数据,但是身高、体重、籍贯和居住地为不常用数据。如果每次查询都要查询所有数据的话,那么不常用数据就会影响效率,而且又不常用。因此,咱们可以将常用的数据和不常用的数据分离存储,即分为两张表,例如:

表 1:常用数据

ID姓名性别年龄
1Charies18
2Swift18
表 2:不常用数据

ID身高体重籍贯居住地
118275中国北京
217250美国纽约
如上面
表1
表2
所示,通过字段
ID
表1
中的一条记录只能匹配
表2
中的一条记录,反之亦然,这就是
一对一
的关系。

一对多/多对一

一对多,即一张表中的记录可以对应另外一张表中的多条记录,但是反过来,另外一张表中的一条记录只能对应第一张表中的一条记录

例如,咱们设计「国家城市表」,其包含两个实体,即国家和城市。

表 3:国家表

COUNTRY_ID国家位置
1中国亚洲
2美国北美洲
3俄罗斯亚洲和欧洲
表 4:城市表

CITY_ID城市国家
1北京中国
2深圳中国
3纽约美国
4莫斯科俄罗斯
如上面
表3
表4
所示,通过字段
国家
表3
中的一条记录可以匹配
表4
中的多条记录,但反过来,
表4
中的一条记录只能匹配
表3
中的一条记录,这就是典型的
一对多
的关系。

多对多

多对多,即一张表中的记录可以对应另外一张表中的多条记录,反过来,另外一张表中的一条记录也可以对应第一张表中的多条记录

例如,咱们设计「教师学生表」,其包含两个实体,即教师和学生。

表 5:教师表

TEA_ID姓名性别
1刘涛
2刘亦菲
3刘德华
表 6:学生表

STU_ID姓名性别
1齐岳
2杜康
观察上面的
表5
表6
,咱们会发现:
表5
表6
的设计满足了实体的属性,但没有维护实体之间的关系,即一个老师教过多个学生,一个学生也被多个老师教过。但是无论咱们在
表5
中还是在
表6
中增加字段,都会出现一个问题,那就是:该字段要保存多个数据,并且还是与其他表有关系的字段,不符合设计规范。因此,咱们可以再设计一张「中间表」,专门用来维护
表5
表6
的关系。

表 7:中间表

IDTEA_IDSTU_ID
111
212
321
432
观察上面的
表5
表6
表7
,咱们会发现增加
表7
之后,咱们维护
表5
表6
的关系更加方便啦!无论是想从
表5
通过
表7
查到
表6
,还是想从
表6
通过
表7
查到
表5
,都非常容易啦!这就是典型的
多对多
的关系。

———— ☆☆☆ —— 返回 -> 史上最简单的 MySQL 教程 <- 目录 —— ☆☆☆ ————
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: