SQL 表关系
在数据库中,不同表之间可以有以下几种关系:一对一、一对多、多对多。
一、一对一
1. 说明
表 A 中的一条记录对应且只对应表 B 中的一条记录。
2. 实现
为一张表添加唯一外键指向另一张表的主键。
3. 示例
学生身份表:
学号 | 身份证 |
---|---|
001 | 20000031 |
002 | 20000024 |
003 | 20000056 |
身份表:
身份证 | 姓名 |
---|---|
20000031 | 小张 |
20000024 | 小明 |
20000056 | 小王 |
学生身份表中的一条数据仅对应身份表中的一条数据。
二、一对多
1. 说明
表 A 中的一条记录对应表 B 中的多条记录。
2. 实现
为一张表添加外键指向另一张表的主键。
3. 示例
学生班级表:
学号 | 班级 |
---|---|
001 | 01 |
002 | 02 |
003 | 01 |
班级表:
班级 | 班级名 |
---|---|
01 | 一班 |
02 | 二班 |
学生班级表中的一条数据对应班级表中的一条数据。
- 一对多:对于班级来说,一个班级可以对应多个学生
- 多对一:对于学生来说,多个学生同属于一个班级
三、多对多
1. 说明
多对多关系一般由三张表组成,通过一张中间表来建立关联,可以看作是两个一对多关系。
表 A 中的多条记录可以与表 B 中的多条记录进行对应。
2. 实现
借助中间表,中间表至少包含两个字段,这两个字段设为外键,并分别指向两张表的主键。
3. 示例
学生表:
学号 |
---|
001 |
002 |
003 |
课程表:
课程 |
---|
01 |
02 |
03 |
学生选课表:
学生 | 课程 |
---|---|
001 | 01 |
001 | 02 |
002 | 01 |
学生表中的多条记录与课程表中的多条记录相对应。
参考
- 数据库系统概论