热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySql三大范式

一、引入三大范式必须保证数据库设计的合理性  -数据库设计关系整个系统的架构,关系到后续的开发效率和运行效率  -数据库的设计主要包含了设计表结构和表之间的联系如何

一、引入三大范式


  • 必须保证数据库设计的合理性
       -数据库设计关系整个系统的架构,关系到后续的开发效率和运行效率
       -数据库的设计主要包含了设计表结构和表之间的联系
  • 如何是合理数据库
       -结构合理
       -冗余较小
       -尽量避免插入删除修改异常

更新异常(Update Anomalies)数据冗余 ,更新数据时,维护数据完整性代价大例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组插入异常(Insertion Anomalies)该插的数据插不进去如果一个系刚成立,尚无学生,就无法把这个系及其系主任的信息存入数据库删除异常(Deletion Anomalies)不该删除的数据不得不删如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了

  • 如何才能保证数据库设计水平
       -遵循一定的规则
       -在关系型数据库中这种规则就称为范式
  • 什么是范式(NF= NormalForm)
       -范式是符合某一种设计要求的总结。
       -要想设计一个结构合理的关系型数据库,必须满足一定的范式。
    在这里插入图片描述
    第一范式
    确保每列保持原子性(不可再分割)
    在这里插入图片描述
    在上面的表中,“家庭信息”和“学校信息”列均不满足原子性的要求,故不满足第一范式,调整如下:在这里插入图片描述
    第二范式
  • 在1NF的基础上,第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。
  • 即在一个数据库表中只描述一件事情。

示例

  • 学号和课程编号作为联合主键
  • 课程名称只依赖于课程编号,而和学号没有关系
    在这里插入图片描述
    解决:
    在这里插入图片描述在这里插入图片描述
    第三范式
  • 在2NF基础上,确保数据表中的每一列数据都和主键直接相关,而不能间接相关
  • 属性不依赖于其他非主属性。

示例
在这里插入图片描述在这里插入图片描述

二、反范式

往往我们在实际项目中,考虑性能和效率问题,会违反三大范式的约束。
规范性和性能问题
 关联查询的表不能超过三张

   - 考虑商业的需求和目标,(成本、用户体验!)数据库的性能更加重要
   - 在规范性能的问题时,需要适当考虑一下规范性


推荐阅读
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 七大策略降低云上MySQL成本
    在全球经济放缓和通胀压力下,降低云环境中MySQL数据库的运行成本成为企业关注的重点。本文提供了一系列实用技巧,旨在帮助企业有效控制成本,同时保持高效运作。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 如何从BAM文件绘制ATAC-seq插入片段长度分布图?
    在ATAC-seq数据处理中,插入片段长度的分布图是一个重要的质量控制指标,它能反映出核小体的周期性排列。本文将详细介绍如何从BAM文件中提取并绘制这些数据。 ... [详细]
  • 本文介绍了ADO.NET框架中的五个关键组件:Connection、Command、DataAdapter、DataSet和DataReader。每个组件都在数据访问和处理过程中扮演着不可或缺的角色。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
author-avatar
wangbiao少爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有