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

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

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

为什么需要数据规范化?

* 信息重复

* 更新异常

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

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

 


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

举例说明:

 

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


       


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

举例说明:

 

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

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

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

 

 


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

举例说明:

 

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

进行调整如下:

 

调整之后满足第三范式

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

规范性 和性能问题

关联表不得超过三张表

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

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

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

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



推荐阅读
  • 本文详细介绍了如何在Windows和Linux系统上配置Openfire服务器,包括安装步骤、数据库配置及端口映射等关键环节。 ... [详细]
  • 本文详细对比了HashMap和HashTable在多线程环境下的安全性、对null值的支持、性能表现以及方法同步等方面的特点,帮助开发者根据具体需求选择合适的数据结构。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 面对众多的数据分析工具,如何选择最适合自己的那一个?对于初学者而言,了解并掌握几种核心工具是快速入门的关键。本文将从数据处理的不同阶段出发,推荐三种广泛使用的数据分析工具。 ... [详细]
  • 本文档旨在为初学者提供MongoDB的基础知识介绍,包括其作为文档型数据库的特点、基本概念以及如何通过命令行界面(CLI)执行基本的操作。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文介绍了一个来自AIZU ONLINE JUDGE平台的问题,即清洁机器人2.0。该问题来源于某次编程竞赛,涉及复杂的算法逻辑与实现技巧。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文探讨了实体对象在Hibernate框架中的三种状态及其转换机制,并详细介绍了saveOrUpdate方法的工作原理,帮助开发者更好地理解和应用这些概念。 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • 本文探讨了线性表中元素的删除方法,包括顺序表和链表的不同实现策略,以及这些策略在实际应用中的性能分析。 ... [详细]
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社区 版权所有