多表设计
多表设计的业务关系主要分为三种:
- 一对多
- 一对一
- 多对一
1.外键
外键的作用是在多表设计中,将表与表关联起来
1.1物理外键
使用 forgign key 关联另一张表
- 创建表时指定
-- 创建表时添加物理外键
create table 子表名(
添加其他字段,
[constraint] [外键名称] foreign key (外键字段名) references 主表名(主表字段名)
添加其他字段
)
- 建表完成后添加外键
-- 建表完成后添加外键
alter table 子表名 add constraint 外键名称 foreign key 外键字段名) references 主表名(主表字段名)
注意!!!
- 子表,要添加外键的表
- 外键名称,描述哪两个表之间发生关系(而可以理解为comment)
- 外键字段名,字段名
- 主表,外键要连接的表
- 主表字段名,通过子表外键与主表连接起来的字段
1.2逻辑外键
只在逻辑上存在关系,数据库物理层面并没有关系
2.一对多
两张表存在一对多的关系:部门与员工
- 一个部门可以有很多员工
- 一个员工只能属于一个部门
设计实现:
在员工的一方增加字段关联部门的一方的主键
3.一对一
两张表存在一对多的关系:用户与身份证、
- 一个用户只能有一个身份证
- 一个身份证只能对应一个用户
设计实现:
在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)
4.多对多
两张表存在一对多的关系:学生和课程
- 一个学生可以选很多课程
- 一个课程也可以被很多学生选
设计实现:
建立第三张中间表,中间表至少包含两个外键,分别关联两方主键