表与表之间的关系
11.1为什么要拆表
拆分表的目的:
为了解决数据冗余问题,可以减少重复数据的存储,表的结构也更加清晰了。
拆分之后:
在某些业务下,需要查询多个表,速度减低了
空间和时间
11.2表与表之间的关系
11.2.1一对一
人与身份证的关系:
注意:一对一不存在数据容易问题??可以不拆分表么?可以
什么场景需要拆分
用户信息+身份证+。。。-》表中的字段太多了。
11.2.2一对多
最常见的关系:
学生和成绩的关系:1个学生有多个成绩
部门和员工的关系:1个部门有多个员工
这种关系怎么去建立,怎么去表达
在多的一方,存储一的主键ID
在成绩表中存储用户的ID。
在员工表中存储部门的ID
11.2.3多对多
老师与学生的关系:一个老师对应多位学生,一个学生对应多位老师;
用户与商品的关系:
用户和权限的关系:
这种关系怎么去建立,怎么去表达:借助第三张表
用户和商品:订单(谁(用户ID)什么时候买了什么商品(商品ID))
11.3多表查询
多表查询查询有如下几种
(1)合并结果集union,union all
(2)连接查询(列的合并)
内连接:
外连接:
左外链接
右外连接
全连接
自然连接
(3)子查询