Part 06 MySQL数据库多表关系
约 573 字大约 2 分钟
2024-12-11
1 数据库多表关系
在关系型数据库中,数据都是按照类别存储到对应的表结构,表和表之间可以通过主外键建立表之间的关系。在一张表的信息过多时,可以将其拆分成若干张子表,以提高查询效率、避免数据冗余、便于数据的更新和维护。
此处所提到的“多表关系”,实际上是表与表之间的数据的关系。
一对一
两表之间的每条记录都是唯一的对应关系。
如学生和其唯一的学生档案之间的关系。
一对多
一个表的一条记录对应另一个表的多条记录,而另一个表的多条记录对应该表的一条记录。
如一个学生和其多门考试成绩的关系。
多对多
两表之间的记录都可以与另一张表中的多个记录相对应。
如一个学生可以选择多门课程,而一门课程中也可以有多个学生。
2 数据库多表关系的维护
2.1 一对一关系
一对一关系并不能解决数据冗余的问题,因为数据量实际上没有下降。
但是一对一关系可以将一条数据拆分成冷热数据分别进行存储,一张表存储热数据,一张表存冷数据。
在一对一关系中,子表的外键数据需要满足非空唯一,因此需要对子表的外键添加唯一约束。或者将子表的主外键结合,即子表的主键同时也是外键,此时子表和主表共用一个主键。
2.2 一对多关系
一对多关系可以解决数据冗余问题。
一对多关系中子表的外键可以不唯一,在创建时正常添加外键约束即可。
2.3 多对多关系
多对多关系也可以解决数据冗余问题。
两张表之间的多对多关系需要建立一个中间关系表来描述。这个中间表同时包括两个外键,分别对应两张表的主键。