热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

数据库三大范式(详细举例说明一看就会)

为什么需要数据规范化?*信息重复*更新异常*插入异常(无法正常显示信息)*删除异常(丢失有效的信息)     第一范式:数据库表中的所有字段值都是

为什么需要数据规范化?

* 信息重复

* 更新异常

* 插入异常(无法正常显示信息)

* 删除异常 (丢失有效的信息)

 


       第一范式:数据库表中的所有字段值都是不可分解的原子值。

举例说明:

 

在上面表中 家庭信息和学历信息不满足原子性要求,不满足第一范式,进行调整如下


       


       第二范式:满足第一范式,需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(每张表只描述一件事情)

举例说明:

 

 在上述表中,同一个订单号可以包括不同产品号,因此主键必须是“订单号”、“产品号”联合组成。

但可以发现 产品号、产品数量、产品价格与“订单号”、“产品号”都相关,但是订单金额 订单时间、订单人仅与订单号相关,与“产品号”无关

因此不满足第二范式要求进行调整如下分成两张表:

 

 


       第三范式:满足第二范式前提下,需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关(消除传递依赖)

举例说明:

 

上表所有属性完全依赖于学号,满足第二范式,但是“班主任性别”、“班主任年龄”直接依赖于“班主任姓名”,并非主键“学号”

进行调整如下:

 

调整之后满足第三范式

 数据库三大范式总结:(规范数据库设计)

规范性 和性能问题

关联表不得超过三张表

1、考虑商业化需求和目标,(成本、用户体验)数据库与性能更加重要

2、在规范性能得问题的时候,需要适当考虑 规范性

3、故意给某些表增加一些冗余长字段。(从多表查变为单表差查)

4、故意增加一些计算列(从大数据降低为小数据,索引:)



推荐阅读
author-avatar
yueloong
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有