数据库MYSQL笔记4—数据表关系和范式

1.表之间的关系

1.1. 一对一

一张表的一条记录一定只能与另外一张表的一条记录进行对应; 反之亦然.
  • 举例:用户表: 姓名,性别,年龄,籍贯,职业,爱好,收入
  • 解决方案:
  • 将常用的和不常用的信息分离存储,
  • 分成两张表:
    表一:姓名,性别,年龄,籍贯 表二:姓名,职业,爱好,收入

1.2. 一对多

一对多:一张表中有一条记录可以对应另外一张表中的多条记录; 但是返回过, 另外一张表的一条记录只能对应第一张表的一条记录. 这种关系就是一对多或者多对一.
  • 举例:学生表与班级表的关系: 以上关系: 一个班级表可以在员工信息表中找到多条关于学生详细信息的记录;但是一个学生依附于某个班级,因而只能找到一个班级: 是一种典型的一对多的关系.

1.3. 多对多

一张表中(A)的一条记录能够对应另外一张表(B)中的多条记录; 同时B表中的一条记录也能对应A表中的多条记录
  • 举例:客户表和商品信息表;中间表是订单信息表,在订单信息表中的客户id连接了客户表,商品id连接了商品信息表;
  • 通过订单行为,客户表与商品信息表产生了关系:一个客户可以购买多个订单,某个商品可以被不同客户购买。

2. 范式Normal Format

  • 对象:每个数据表
  • 解决:一种数据的存储与优化的问题: 保存数据的存储之后, 凡是能够通过关系寻找出来的数据,坚决不再重复存储:
  • 目的:减少表中数据的冗余,
  • 规范:
    • 1.第一范式:每个字段的不可分割性;如,datetime :2020-01-01 21:30:45 可以分割为两个字段,日期2020-01-01 和时间21:30:45
    • 2.第二范式:主键要有唯一性,不能重复,只能依靠复合主键判断唯一性。解决方法:1.将复合主键及各自所下属的字段独立造表,并建立唯一索引,3.原表重建唯一逻辑索引
    • 3、第三范式:主键与其他字段都要有关联性,不能是递推关系,解决方式:找到起中间关联作用的字段,并拆分表格
  • 范式与效率的博弈: 虽然遵循了理想的范式,但是在实际应用中,不得不关联多表查询, 而关联多表会降低查询效率。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值