表与表之间的关系
为什么要拆表
拆分表的目的:
为了解决数据冗余问题,可以减少重复数据的存储,表的结构也更加清晰了。
拆分之后:
在某些业务下,需要查询多个表,速度减低了。
空间 和 时间
11.2 表与 表 之间 的 关系
人与身份证的关系:
注意:
(1)一对一不存在数据容易问题??可以不拆分表么?可以。
(2)什么场景需要拆分
用户信息 + 身份证 + …-》表中的字段太多了。
最最常见的关系:
学生和成绩的关系:1 个学生有多个成绩。
部门和员工的关系:1 个部门有多个员工。
这种关系怎么去建立,怎么去表达
在“多”的一方,存储“一”的主键 ID。
在成绩表中存储用户的 ID。
在员工表中存储部门的 ID
建表:使用主外键实现。
常见的案例:
老师与学生的关系:一个老师对应多位学生,一个学生对应多位老师;
用户与商品的关系:
用户和权限的关系:
这种关系怎么去建立,怎么去表达:借助第三张表
用户和商品:订单(谁(用户 ID)什么时候买了什么商品(商品 ID))
Id |
用户 ID |
商品 ID
|
1001 |
1 |
6
|
1002 |
1 |
5 |
1003 |
2 |
6 |
用户和权限的关系:谁拥有什么权限
Id
|
用户 ID |
权限 ID |
1001 |
1 |
1001 |
1002 |
1 |
1003 |
1003 |
2 |
1001 |
多表查询
多表查询查询有如下几种
(1) 合并结果集:union,union all
(2) 连接查询(列的合并):
内连接:
外连接:
左外连接
有外连接
全连接
自然连接
(3) 子查询
合并结果集(行连接)
2 个结果集(表)合并到一起。
要求:2 个结果集的列数(数据类型)应该要相同
原文:https://www.cnblogs.com/M78-u-p/p/14656278.html