关系模式规范化的基本思想是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插人、删除时发生的异常现象。这就要求关系模式要满足一定的条件。我们把关系模式规范化过程中为不同程度的规范化要求设立的不同标准称为范式由于规范化的程度不同,就产生了不同的范式。

第一范式
第一范式(First Normal Form)是最基本的规范形式,即关系中每个属性都是不可再分的简单项。

如果关系模式R所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF,记作R∈1NF。

把满足1NF的关系称为规范化关系。在关系数据库系统中只讨论规范化的关系,凡是非规范化的关系模式必须转化成规范化的关系。因此,1NF是关系模式应具备的最起码的条件。

然而,一个关系模式仅仅属于第一范式是不适用的,它可能具有大量的数据冗余,存在插入异常、删除异常和更新异常等弊端。

第二范式

如果关系模式R∈1NF,且每一个非主属性都完全函数依赖于R的主关系键,则称R属于第二范式(Second Normal Form),简称2NF,记作R∈2NF。

从1NF关系中消除非主属性对主关系键的部分函数依赖,则可得到2NF关系。如果R的关系键为单属性,或R的全体属性均为主属性,则R∈2NF。

2NF规范化是指把1NF关系模式通过投影分解,转换成2NF关系模式的集合。分解时遵循“一事一地”的基本原则,让一个关系只描述一个实体或者实体间的联系。

2NF的关系模式解决了1NF中存在的一些问题,2NF规范化程度比1NF前进了一步,但2NF的关系模式在进行数据操作时,仍存在着数据冗余、插入异常、删除异常和更新异常等问题。之所以存在这些问题,是因为2NF的关系模式存在着非主属性对主键的传递函数依赖。为此,对2NF关系模式还需要进一步简化,消除这种传递函数依赖,这样就得到了3NF。

第三范式

如果关系模式R∈2NF,且每一个非主属性都不传递函数依赖于R的主关系键,则称R属于第三范式(Second Normal Form),简称3NF,记作R∈3NF。

3NF规范化是指把2NF关系模式通过投影分解转换成3NF关系模式的集合。3NF规范化时遵循的原则与2NF相同,即“一事一地”,让一个关系只描述一个实体或者实体间的联系。

BC范式

如果关系模式R∈1NF,且所有的函数依赖X→Y(YX),决定因素X都包含了R的一个候选键,则称R属于BC范式(Boyce Codd Normal Form),记作R属于BCNF。如果数据库中每个关系模式都属于BCNF,则称为BCNF的数据库模式。

满足BCNF的关系将消除任何属性(主属性或非主属性)对键的部分函数依赖和传递函数依赖。

如果一个关系数据库中的所有关系模式都属于BCNF,那么,在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了操作异常诸多问题。

第四范式

前面所介绍的规范化都是建立在函数依赖的基础上,函数依赖表示的是关系模式中属性间的一对一或一对多的联系,但它并不能表示属性间的多对多的关系,因而某些关系模式虽然已经规范到到BCNF,仍然存在一些数据冗余、插入异常、删除异常和更新异常弊端。因此定义第四范式来解决多值依赖这个问题。

设有一关系模式R(U),U是其属性全集,X,Y是U的子集,D是R上的数据依赖集。如果对于任一多值依赖X→→Y,此多值依赖是平凡的,或者X包含了R的一个候选关键字,则称R是第四范式的关系模式,记为R∈4NF。

函数依赖和多值依赖是两种最重要的数据依赖。如果只考虑函数依赖,则属于BCNF的关系模式的规范化程度已经是最高的了。如果考虑多值依赖,则属于4NF的关系模式化程度是最高的。

事实上,数据依赖中除函数依赖和多值依赖之外,还有其他数据依赖。函数依赖是多值依赖的一种特殊情况,而多值依赖实际上又是连接依赖的一种特殊情况。但连接依赖不像函数依赖和多值依赖那样可由语义直接导出,而是在关系的连接运算时才反映出来。存在连接依赖的关系模式仍可能遇到数据冗余及插人、修改、删除异常的问题。如果消除了属于4NF的关系模式中存在的连接依赖,则可以进一步达到5NF的关系模式。

不同级别范式之间的关系可以用下图表示。

各范式之间的关系

参考资料:[1]陈志泊,王春玲,许福,范春梅.数据库原理及应用教程(第3版)[M].北京:人民邮电出版社,2014:145-158.

规范化理论:范式等级相关推荐

  1. 【数据库】 关系模式的规范化理论----一文让你轻松理解其中奥秘

    文章目录 关系模式设计中存在的问题 关系的形式化定义 数据依赖的基本概念 函数依赖 非平凡函数依赖.平凡函数依赖 完全函数依赖和部分函数依赖 传递函数依赖 关键字和超关键字 数据依赖的公理系统 函数依 ...

  2. 6.0 《数据库系统概论》之关系数据库的规范化理论(数据依赖对表的影响[插入-删除-修改-冗余]、1NF-2NF-3NF-BCNF-4NF、函数依赖与多值依赖)

    文章目录 0.思维导图 1.为什么要学习关系数据库规范化理论? (1)基本概念回顾 (2)关系模式的形式化定义 (3)什么是数据依赖F? (4)数据依赖F对关系模式的影响 1️⃣ 数据冗余(Data ...

  3. 第6章 关系数据理论—范式的介绍

    第6章 关系数据理论-范式的介绍 本文全部内容来自数据库系统概论(第5版)-王珊.萨师煊著 部分函数依赖图,出于自己的理解,如有错误,请大家评论指正! 范式:关系数据库中需要满足的一定要求的规范形式. ...

  4. 数据库规范化理论详解

    关系数据库理论 数据依赖:数据依赖是一个关系内部,属性和属性之间的一种约束关系 常见的数据依赖有函数依赖[1](FD),多值依赖[2](MVD) 对于数据库来说,如果你的关系模型设计的不好,将会存在以 ...

  5. 【数据库学习笔记】Day06 - 关系数据库规范化理论

    [数据库学习笔记]Day06 - 关系数据库规范化理论 目录 一.关系数据库中存在的数据冗余问题 二.函数依赖 三.关系规范化 一.关系数据库中存在的数据冗余问题: 以学生信息表为例: 该关系模式存在 ...

  6. 数据库系列(5)-数据库设计之规范化理论

    一.概述 数据库标准化是EF Codd在1970年代开发的,是许多数据库设计的标准要求.规范化是一种可以帮助您避免数据异常和管理数据的其他问题的技术. 目的: 消除数据冗余(因此使用更少的空间) 使更 ...

  7. 论中国传统辩证推理科学理论范式(ZZ)

    摘要:西方科学的形式逻辑以一系列相互独立的公理.设定.经验模型等为大前提,以不矛盾的逻辑为推理手段,构建其系统的科学理论,决定了其理论体系下的世界是众多不连续的带状.绳索状或网状结构的共存体,而不可能 ...

  8. 可有可无的Mysql工作技巧 3 -- 工作中用到的理论范式,工具,建模经验

    摄影并不仅仅是对现实世界的还原,更多时候是可以被⽤作传递观点和表达意⻅的⼯具 聚合与分组聚合 聚合函数则属于多行函数,表中的多行记录会参与计算,并返回一个数值,且它通常用于分组的相关统计. 所有的聚合 ...

  9. 规范化理论:函数依赖

    函数依赖的定义 关系模式中的各属性之间相互依赖.相互制约的联系称为数据依赖.数据依赖一般分为函数依赖.多值依赖和连接依赖.其中函数依赖是最重要的数据依赖. 函数依赖(Functional Depend ...

最新文章

  1. python画折线图详解-手把手教你Python yLab的绘制折线图的画法
  2. twitter bbs
  3. 8.Hadoop的学习(Hadoop的配置--搭建完全分布式)
  4. binutils-2.22编译心得
  5. 机器学习入门04-线性回归原理与java实现多元线性回归
  6. .net框架读书笔记---类型成员及其访问限定(一)
  7. mysql自定义存储过程_MySQL自定义函数、触发器、存储过程
  8. dubbo 路由配置_Dubbo-go v1.5.1发布,Dubbo 的 Go实现
  9. 微服务分布式企业框架 Springmvc+mybatis+shiro+Dubbo+ZooKeeper
  10. MATLAB胸部CT图像中肺部提取,轮廓跟踪技术勾画出肺部轮廓
  11. Error while trying to use the following icon from the Manifest
  12. 语法树,短语,直接短语,句柄
  13. linux文件系统程序设计实验报告,浙江大学Linux程序设计实验报告
  14. 基于vue2使用vue-awesome-swiper 轮播图(踩坑记录)
  15. 做人最重要的是学会珍惜,爱情如此,人生又何尝不是呢?
  16. android 強制屏幕方向,今日精品安卓App推荐:锁定屏幕旋转方向
  17. AndroidStudio安装SVN时忘记勾选command line client tools解决方案
  18. k8s coredns ContainerCreating
  19. 早期的行人再识别与深度行人再识别研究——行人再识别技术综述阅读笔记
  20. 圆周率计算程序图计算机基础知识,沪教版(2019)高中信息技术 必修1 项目七 用计算机计算圆周率——设计简单数值数据算法 教案(3课时)...

热门文章

  1. springside4配置环境时无法下载到两个核心包
  2. 为什么计算机里没有桌面显示不出来,电脑开机后桌面显示不出来如何修复_电脑开机后桌面没有东西的处理办法-系统城...
  3. sql语句中的子查询
  4. 小技巧,IDEA 卡住不动解决办法
  5. lesson - 7 课程笔记 vim
  6. verilog验证平台技巧(避免竞争的办法)
  7. 基于OpenWrt的Wol(wake on lan)远程唤醒
  8. / 和 /* 和 /** 的区别
  9. ecshop数据结构
  10. ArcGIS计算面状河流的长度(河流中心线)