规范数据库设计 -数据库三大范式 之 简单理解 通俗易懂
第一范式(1NF):
原子性: 保证每一列不可再分
大白话来讲就是一张表中的“列”项里的内容 不能再分割 。
举个例子:
( 图片 第一范式)
第二范式(2NF):
前提 满足第一范式
每张表只描述一件事情
举个例子:
(图片)
订单号 和产品号相关联 但是 产品号不一定跟订单金额 和订单时间相挂钩, 所以 拆开来
第三范式(3NF):
前提: 满足第二范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,不能间接相关, 即消灭传递依赖
举个例子:(图)
学号 和姓名挂钩 对应姓名有所属的班主任管辖, 但是班主任是男是女 就是另一回事 对于学号来说 是不重要的信息 ,想要描述 则 需要另外建立一张表来描述“班主任”。
三大范式有时 是有一定问题的。 所以:
扩展:
规范性 和 性能 的问题
关联查询的表不得超过三张表
- 考虑商业化的需求和目标 ,(成本, 用户体验! ) 数据库的性能更加重要
- 在规范性能的问题的时候 , 需要适当的考虑一下 规范性!
- 故意给某些表增加一些荣誉的字段(从夺标查询中变为单表查询)【例如 在订单表里 加了商品id的其他信息】、
- 故意增加一些计算列(从大数据量降低为小数据量的查询 )【例如 count() 计数】
好啦 以上就是本次内容小分享, 不知道各位码友看了后 有没有一点点帮助, 欢迎指正
(ps 以上素材 用到了网上的 例子 结合了狂神老哥的分享 再自己敲了一遍 虽然说 内容 上 差不多哈哈哈 ) 有错别字的话 欢迎斧正 谢谢