抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

多表操作

实际开发中,一个项目通常需要很多张表才能完成。

例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表 的数据之间存在一定的关系,接下来我们将在单表的基础上,一起学习多表方面的知识。

MySQL关系型数据库
非关系型数据库:ES、Redis…

多表之间的关系

  • 一读一:一夫一妻制度
  • 一对多:一夫多妻制度
  • 多对多:群居制度

表跟表之间的关系,大家可以理解为是实体跟实体的关系的一种映射。比如,导师与学员,订单与客 户,部门与员工等等。

主要关系有三种:

1
2
3
一对一:比如,一个男的只能取一个女的当老婆。
一对多:比如,客户与订单,一个客户可以在商城中下多个订单。
多对多:比如,学生与课程,一个学校有很多学生,学生都可以学很多课程。

image-20220604192713469

1)一对一关系

在实际工作中,一对一在开发中应用不多,因为一对一完全可以创建成一张表

建立两表的唯一一对一的关系:

  • 第一步:将被关联的表主键唯一
  • 第二步:建立外键约束,管理该表的唯一主键

案例:一个丈夫只能有一个妻子

1
2
3
4
5
6
7
CREATE TABLE wife(
id INT PRIMARY KEY , wname VARCHAR(20), sex CHAR(1)
);

CREATE TABLE husband(
id INT PRIMARY KEY , hname VARCHAR(20), sex CHAR(1)
);

外键唯一

一对一关系创建方式 1 之外键唯一:

添加外键列 wid,指定该列的约束为唯一(不加唯一约束就是一对多关系)

1
ALTER TABLE husband ADD wid INT	UNIQUE;

添加外键约束

1
alter table husband add foreign key (wid) references wife(id);

主键做外键

一对一关系创建方式 2 之主键做外键:(大家下去自己练习) 思路:使用主表的主键作为外键去关联从表的主键

2)一对多关系

image-20220604195003225

常见实例:一个分类对应多个商品,客户和订单,分类和商品,部门和员工.

总结:有外键的就是多的一方。

注意事项:一对多关系和一对一关系的创建很类似,唯一区别就是外键不唯一

一对多关系创建:

  • 添加外键列
  • 添加外键约束

3)多对多关系

常见实例:学生和课程、用户和角色

image-20220604195129402

注意事项:需要中间表去完成多对多关系的创建,多对多关系其实就是两个一对多关系的组合

多对多关系创建:

  • 创建中间表,并在其中创建多对多关系中两张表的外键列

  • 在中间表中添加外键约束

  • 在中间表中添加联合主键约束

评论