- 多对多
- 如:商品 和 订单
- 一个商品对应多个订单,一个订单包含多个商品。如下图:
- 一对多
- 如:部门 和 员工
- 一个部门对应多个员工,一个员工对应一个部门。
- 实现方式
- 在多的一方建立外键,指向一的一方的主键
- 案例
- 我们还是以 员工表 和 部门表 举例:
- 经过分析发现,员工表属于多的一方,而部门表属于一的一方,此时我们会在员工表中添加一列(dep_id),指向于部门表的主键(id):
- 建表语句如下:
- -- 删除表
DROP TABLE IF EXISTS tb_emp;
DROP TABLE IF EXISTS tb_dept;
-- 部门表
CREATE TABLE tb_dept(
id int primary key auto_increment,
dep_name varchar(20),
addr varchar(20)
);
-- 员工表
CREATE TABLE tb_emp(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int,
-- 添加外键 dep_id,关联 dept 表的id主键
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES tb_dept(id)
); - 查看表结构模型图: