三大范式以及性能问题

三大范式
概念解释: 三大范式其实就是数据库建表的规范。

第一范式:要求一张表中的数据每一列都是不可分割的原子项数据
第二范式:消除部分依赖,要求一张表中的每一列都完全依赖于主键(针对于组合主键),也就是不会出现某一列只和部分主键相关
第三范式:消除传递依赖,要求一张表中的每一列都和主键是直接依赖的,不是间接依赖

举例分析:

第一范式:要求一张表中的数据每一列都是不可分割的原子项数据
例如下面的这张表就是不符合第一范式的,因为家庭信息和学校信息中的数据都不是原子项数据。

修改之后:此时所有的数据就是原子项数据


第二范式:消除部分依赖

例如下图:这是订单表,由于同一订单中会出现不同的产品,所以将订单号与产品号作为组合主键,但是我们可以看到其中的产品数量,产品折扣和产品价格与主键中的订单号,产品号都有关,而订单时间与订单金额只与订单号有关,这就导致了部分依赖。

修改之后:为了消除部分依赖,所以应该分表!


第三范式:消除传递依赖

举例:下表中的所有属性的确都完全依赖于学号,但是实际上班主任性别与班主任年龄确是直接依赖于班主任姓名的,而不是直接依赖于学号,这样就导致了传递依赖!

修改之后:此时就不会产生传递依赖的问题了!

 
————————————————
版权声明:本文为CSDN博主「李 子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42278076/article/details/114112633

其实数据库中,表的简洁必然会带来冗余的关联,所以要充分的考虑到各方面的问题,根据实际情况进行数据表的合理分配!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值