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

学生表中的多条记录与课程表中的多条记录相对应。

参考

  • 数据库系统概论