mysql 表与表之间的关系

当你写表的时候有没有出现过一条数据要打很多行,而且有很多重复的,看起来也极其不舒服,而且也不方便。
如:
在这里插入图片描述
张三 计算机成绩100分,如果再多加几科成绩,会是什么样子呢?
在这里插入图片描述
根据表图就能发现,除了学科和成绩两列,其余的都是重复字段。
这时候我们就需要进行表拆分。
把这个表拆分成两个表,一个学生信息表,一个学生成绩表,用学号进行两表关联,表是不是看起来就好一些。
在这里插入图片描述

拆分表的目的:
为了解决数据冗余问题,可以减少重复数据的存储,表的结构也更加清晰了。拆分之后,在某些业务下,需要查询多个表,速度减低了

表与表之间的关系:
一对一
人与身份证的关系:
注意:
(1) 一对一不存在数据容易问题?可以不拆分表么?可以。
(2) 什么场景需要拆分
用户信息+身份证+…表中的字段太多时使用

一对多
最常见的关系:
学生和成绩的关系:1个学生有多个成绩。
部门和员工的关系:1个部门有多个员工。
这种关系怎么去建立,怎么去表达
在“多”的一方,存储“一”的主键ID。
在成绩表中存储用户的ID。
在员工表中存储部门的ID
建表:使用主外键实现。
扩展:
主键
主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 。
外键
外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系

多对多
常见的案例:
老师与学生的关系:一个老师对应多位学生,一个学生对应多位老师:
用户与商品的关系:
用户和权限的关系:
这种关系怎么去建立,怎么去表达:借助第三张表
用户和商品:订单(谁(用户ID)什么时候买了什么商品(商品ID))
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值