数据表设计范式笔记

什么是范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。

第一范式

原子性

保证每一列都是不可以再划分的

比如:有一列叫学生信息,包含了学号班级等等,这就不满足原子性,应该拆分为学号,姓名等等

第二范式

前提:满足第一范式(1NF)

综述:每一张表只描述一件事情,即除主键之外的列的信息都必须与主键绑定

比如:一个表里有订单号和商品号作为联合主键,表中描述了订单和商品的信息,但是订单号,只跟订单金额和时间相关联,表中就不应该出现商品相关的,这时候就需要将他们拆成订单表和商品表,而两者之间的关系应该由一张中间表进行关联,保存有关系的订单表信息的主键和商品表信息的主键

第三范式

前提:满足第一范式(1NF)和第二范式(2NF)

综述:每一行数据都和主键直接相关,而不能间接相关

比如:一个订单表有客户信息,这时候只能有客户的主键去作为关联就好,其他关联查出来就可以了

合理运用范式

  • 三范式只是规范化数据库设计,具体还需要根据实际需求而定
  • 性能和规范之间有取胜,因为表的数量多,关联查询多的时候性能不佳,导致用户体验不佳
  • 当字段冗余不多的时候可以适当冗余,使得多表变单表
  • 当故意增加一些计算列,减少查询维护结果数据的压力
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值