表的范式化和反范式化
不符合第三范式要求的表存在下列问题:
数据余:(分类,分类描述)对于每一个商品都会进行记录
数据的插入异常
数据的更新异常
数据的删除异常
范式化是指数据库设计的规范,目前说到范式化一般是指第三设计范式,也就是要求数据表中不存在非关键字段对任意候选关键字段的传递函数依赖则符合第三范式
商品名称 | 价格 | 重量 | 有效期 | 分类 | 分类描述 |
可乐 | 3.00 | 250ml | 2014.6 | 饮料 | 碳酸饮料 |
北冰洋 | 3.00 | 250ml | 2014.7 | 饮料 | 碳酸饮料 |
存在以下传递函数依赖关系:(商品名称)->(分类)->(分类描述)
也就是说存在非关键字段“分类描述”对关键字段“商品名称”的传递函数依赖。
一般来说 是对符合第三范式的表结构进行设计,在设计之前,就要考察表是否符合第三范式要求;有无存在非关键字段对某一关键字段的传递函数依赖。
传递函数依赖理解
不符合第三范式的表存在,数据冗余、数据插入异常、更新异常、删除异常
表的范式化和反范式化
数据库优化
数据库结构设计:数据表中不存在非关键字段对任意的候选关键字段的传递函数依赖
表的范式化——分表
表的范式化即数据库设计的规范化:数据表不存在非关键字段对任意关键字段的传递函数依赖,则符合第三范式。
可以将一张数据表进行拆分,来满足第三范式的要求。
设计表的时候符合范式化是为了:减少数据冗余、减少表的插入、更新、删除异常
设计表的时候使用反范式化是为了:以空间换时间、增强代码的可编程性和可维护性
不符合第三范式要求的表存在以下问题:
1.数据冗余:(分类、分类描述)对于每一个商品都会进行记录
2.数据插入异常
3.数据更新异常
4.数据删除异常
第三范式:要求数据表中不存在非关键字段对任意候选关键字段的传递函数依赖
表的范式化结构
非关键字段不得有其余字段对其产生依赖!!