1、数据库范式的作用

数据库范式主要是为解决关系数据库中数据冗余、更新异常、插入异常、删除异常问题而引入的设计理念。简单来说,数据库范式可以避免数据冗余,减少数据库的存储空间,并且减轻维护数据完整性的成本。是关系数据库核心的技术之一,也是从事数据库开发人员必备知识。

2、数据库范式分类介绍

范式是评价数据库模式规范化程度从低到高主要有:1NF、2NF、3Nf、BCNF、4NF、5NF。

2.1 1NF 第一范式

强调属性的原子性约束,要求属性具有原子性,不可再分解。

举例:

学生表(学号、姓名、年龄、性别、地址)。地址可以细分为国家、省份、城市、市区、街道,那么该模式就没有达到第一范式。

第一范式存在问题:冗余度大、会引起修改操作的不一致性、数据插入异常、数据删除异常。

2.2 2NF 第二范式

第二范式,强调记录的唯一性约束,数据表必须有一个主键,并且没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。

举例:

版本表(版本编码,版本名称,产品编码,产品名称),其中主键是(版本编码,产品编码),这个场景中,数据库设计并不符合第二范式,因为产品名称只依赖于产品编码。存在部分依赖。所以,为了使其满足第二范式,可以改造成两个表:版本表(版本编码,产品编码)和产品表(产品编码,产品名称)

2.3 3NF 第三范式

第三范式,强调数据属性冗余性的约束,也就是非主键列必须直接依赖于主键。也就是消除了非主属性对码的传递函数依赖。

举例:

订单表(订单编码,顾客编码,顾客名称),其中主键是(订单编码),这个场景中,顾客编码、顾客名称都完全依赖于主键,因此符合第二范式,但顾客名称依赖于顾客编码,从而间接依赖于主键,所以不能满足第三范式。如果要满足第三范式,需要拆分为两个表:订单表(订单编码,顾客编码)和顾客表(顾客编码,顾客名称)。

说明:3NF的模式肯定满足2NF。产生冗余和异常的两个重要原因是部分依赖和传递依赖。3NF模式中不存在非主属性对码的部分函数依赖和传递函数依赖,性能较好。1NF、2NF一般不适合作为数据库模式,通常需要转换为3NF或者更高级别的范式,这种变换过程称为关系模式规范化处理。

2.4 BCNF(Bovce Codd Normal Form 巴克斯范式)

属于修正的第三范式,是防止主键的某一列会依赖于主键的其他列。当3NF消除了主属性对码的部分函数依赖和传递函数依赖称为BCNF。

特性:

1、所有主属性对每一个码都是完全函数依赖

2、所有主属性对每一个不包含它的码,也是完全函数依赖

3、没有任何属性完全函数依赖与非码的任何一组属性

举例:库存表(仓库名,管理员名,商品名,数量),主键为(仓库名,管理员名,商品名),这是满足前面三个范式的,但是仓库名和管理员名之间存在依赖关系,因此删除某一个仓库,会导致管理员也被删除,这样就不满足BCNF。

2.5 4NF 第四范式 

非主属性不应该有多值。如果有多值就违反了第四范式。4NF是限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。

举例:用户联系方式表(用户id,固定电话,移动电话),其中用户id是主键,这个满足了BCNF,但是一个用户有可能会有多个固定电话或者多个移动电话,那么这种设计就不合理,应该改为(用户id,联系方式类型,电话号码)。

说明:如果只考虑函数依赖,关系模式规范化程度最高的范式是BCNF;如果考虑多值依赖则是4NF。

2.6 5NF 第五范式

第五范式属于最终范式,消除了4NF中的连接依赖,第五范式需要满足以下要求:

1、必须满足第四范式

2、表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键。

一般实际应用中不必考虑第五范式。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

关系数据库理论:数据库的六大范式知识笔记相关推荐

  1. 表数据库名_关系数据库理论:数据库的六大范式知识笔记

    1.数据库范式的作用 数据库范式主要是为解决关系数据库中数据冗余.更新异常.插入异常.删除异常问题而引入的设计理念.简单来说,数据库范式可以避免数据冗余,减少数据库的存储空间,并且减轻维护数据完整性的 ...

  2. 数据库理论 —— 数据库设计六大范式

    前言 笔者遇到范式是在数据仓库建模时,以前对范式的理解比较浅显,且只了解前三范式,对后面三个范式并不了解,趁此机会和大家一起把其他范式学习下. 1. 基础概念 在了解范式之前我们需要对其中的一些基本概 ...

  3. SQLServer数据库文件组相关知识笔记

    1.数据库文件组概念 数据库文件被组织在称为"文件组"的逻辑组中.文件组是所创建对象(如表或索引)的目标容器,对象数据将分散在其所在目标文件组的文件中,文件组可以按你要求的方式来控 ...

  4. 数据库系备份相关知识笔记

    1.数据库备份的知识介绍 在互联网时代,最珍贵的财产不是计算机应用软件,更不是计算机硬件,而是企业在业务长期发展过程中积累下来的业务数据.建立网络最根本的用途是更加方便的传递.使用数据,人为原因.硬盘 ...

  5. 事务管理基础:数据库的并发控制相关知识笔记

    1.并发操作的概念介绍 并发操作主要是指在多用户共享的系统当中,可能存在很多用户同时对同一个数据进行操作.并发操作会造成丢失更新.不可重复读.读脏数据.主要原因是事务的并发操作破坏了事务的隔离性. 2 ...

  6. DataBase 之 数据库设计六大范式

    范式是符合某一种级别的关系模式的集合.关系数据库中的关系必须满足一定的要求,即满足不同的范式. 目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).第四范式(4NF) ...

  7. Java学习笔记:数据库中的范式和反范式

    范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.数据库的设计范式是数据库设计所需要满足的规范.只有理解数据库的设计范式,才能设计出率.优雅的数据库,否则可能会设计出 ...

  8. 数据库导论 关系数据库理论

    1. 数据库理论 数据库是 一系列有价值的信息组成的结构化的集合 (A structured collection of meaningful data). 我们称任何有价值的信息为 数据, (Dat ...

  9. access2013数据库实验笔记_医学科研实验基础知识笔记(十):甲基化

    往期回顾 医学科研实验基础知识笔记(一):细胞增殖 医学科研实验基础知识笔记(二):细胞凋亡检测 医学科研实验基础知识笔记(三):细胞周期检测 医学科研实验基础知识笔记(四):细胞自噬研究策略 医学科 ...

最新文章

  1. ACMNO.17C语言-筛法求素数 用筛法求之N内的素数。
  2. Android-SharedPreferences
  3. 2050大会走向通用人工智能专场总结
  4. Windows 8的圣战
  5. 【Win 10应用开发】SplitView控件
  6. resultmap的写法_mybatis的mapper.xml中resultMap标签的使用详解
  7. Homebrew替换源
  8. access2003的使用
  9. 条件编译 #ifndef _HEAD_H...中下划线的理解
  10. 徕卡静态转换rinex软件_[摄影]旅游伴侣———徕卡SL2
  11. VC++实现ip数据包分析
  12. Java代理(proxy)
  13. 静电放电(ESD)知识小记
  14. [Photography] 测光
  15. SOFA原理学习--sofa rpc入门示例
  16. 【数据挖掘】K-Means 一维数据聚类分析示例
  17. 关于计算机学院的毕业论文致谢,计算机学院毕业生论文致谢范文
  18. 基于Java的飞机大战的课程设计与实现
  19. mysql 按中文字段排序
  20. java 谷歌地图_如何使用java在浏览器上显示谷歌地图?

热门文章

  1. ASP.NET MVC3书店--第五节 表单编辑(第二部分)(转)
  2. 《WebForm开发系列之控件篇》Item2 ListBox
  3. halcon edges_sub_pix算子
  4. DM365 color space
  5. 使用halcon结合机械XY轴对相机进行9点标定
  6. ABB 机器人 IsStopMoveAct 指令 - Is stop move flags active
  7. 【TensorFlow】——索引与切片
  8. python series用法_如何使用Python中的Series字典创建数据框?
  9. mysql 文件描述符_MySQL没有发布临时文件描述符
  10. 字符串左旋问题及判断一个字符串是否由另一个字符串左旋得到