# 一对一关系
人和身份证,一个人只有一个身份证,一个身份证只对应一个人
实现: 任意一方添加「唯一」外键(唯一约束),指向另一方主键
# 学生表
stu_id | name | i_id |
---|---|---|
1 | Max | 1 |
2 | Ted | 2 |
# 身份表
i_id | number |
---|---|
1 | 420373 |
2 | 442000 |
# 一对多关系
部门与员工,一个部门对应多个员工,一个员工只对应一个部门
实现: 在「多」建立外键,指向「一」的主键
# 员工表
e_id | name | dept_id |
---|---|---|
1 | Max | 1 |
2 | Ted | 2 |
# 部门表
dept_id | name |
---|---|
1 | Customer |
2 | Recruitment |
# 多对多关系
学生和课程,一个学生可以选择多个课程,一个课程也可以被多个学生选择
实现: 需要借助第三张中间表,中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键
联合主键: 第三张表可以将两个外键联合作为表的主键,避免出现重复
# 学生表
stu_id | name |
---|---|
1 | Max |
2 | Ted |
# 课程表
c_id | name |
---|---|
1 | Math |
2 | English |
# 中间表
stu_id | c_id |
---|---|
1 | 1 |
1 | 2 |