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


本文全部内容来自数据库系统概论(第5版)—王珊、萨师煊著
部分函数依赖图,出于自己的理解,如有错误,请大家评论指正!


范式:关系数据库中需要满足的一定要求的规范形式。

范式的划分是根据关系数据库中的关系需要满足的一定要求或不同程度的要求。

  • 1NF(第一范式)
  • 2NF(第二范式)
  • 3NF(第三范式)
  • BCNF(修正的第三范式)
  • 4NF(第四范式)
  • 5NF(第五范式)

从1NF到5NF,规范化要求是逐级递增的。

规范化:一个低一级的关系模式通过模式分解可以转换成若干个高一级范式的关系模式的集合,这个过程叫做规范化。

规范化的基本思想:逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的分离,即“一事一地”的模式设计原则。

规范化的实质:概念单一化。

1、1NF(第一范式)

1NF:关系模式中的每个数据项都是不可分的数据项。

第一范式是关系模式中最基本的范式。

2、2NF(第二范式)

定义1:若关系模式R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则关系模式R属于2NF。

例:关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中Sloc为学生的住处,并且每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno),则函数依赖有:

(Sno,Cno)->Grade/*完全函数依赖*/
Sno->Sdept,(Sno,Cno)->Sdept/*部分函数依赖*/
Sno->Sloc,(Sno,Cno)->Sloc/*部分函数依赖*/
Sdept->Sloc(/*每个系的学生只能住在一个地方*/)

根据此信息可以换出画出相应的函数依赖图为:(实线表示完全函数依赖,无箭头实线表示部分依赖)

根据函数依赖图,可以看出非主属性Sdept和Sloc并不完全依赖于码(Sno,Cno),因此此关系模式S-L-C不满足第二范式(2NF)。

不满足2NF的关系模式R,会出现插入异常、删除异常、修改复杂的问题。

根据投影分解法,可以将S-L-C关系模式分解成两个关系模式:SC(Sno,Cno,Grade)和SL(Sno,Sdept,Sloc)。

3、3NF(第三范式)

定义2:设关系模式R<U,F>属于1NF,若R中不存在这样的码X,属性组Y及非主属性Z(Y不是Z的子集,数学符号不包含)使得X->Y,Y->Z成立,X不函数依赖于Y,则称R<U,F>属于3NF。

由定义知:若关系模式R属于3NF,则每一个非主属性既不传递依赖于码,也不部分依赖于码。

在SL中,由Sno->Sdept,Sdept->Sloc,可得Sloc对Sno传递函数依赖,因此SL不属于3NF。

不符合3NF的关系模式,也会出现与2NF一样的问题。

通过模式分解法将SL分解成SD和DL两个子关系模式。

SD(Sno,Sdept)
DL(Sdept,Sloc)

4、BCNF(修正的第三范式)

定义3:关系模式R<U,F>属于1NF,若X->Y(Y函数依赖于X)且Y不包含于X时,X比含有码,则R<U,F>属于BCNF。

关系模式R<U,F>中,若每一个决定因素都含有码,则R<U,F>属于BCNF。

满足BCNF的关系模式所具有的性质:

  • 所有非主属性对每一个码都是完全函数依赖。
  • 所有主属性对每一个不包含它的码也是完全函数依赖。
  • 没有任何属性完全函数依赖于非码的任何一组属性。

关系模式R<U,F>属于3NF,但不一定属于BCNF。

例:

  • 关系模式C(Cno,Cname,Pcno),它只有一个码Cno,没有任何属性对Cno部分依赖或传递依赖,所以C属于3NF。同时C中Cno是唯一决定因素,所以C属于BCNF。

  • 对于关系模式SC(Sno,Cno,Grade),它的码是(Sno,Cno),没有任何属性对码部分依赖或传递依赖,所以SC属于3NF。同时SC中的码是唯一决定因素,所以SC属于BCNF。

例:关系模式S(Sno,Sname,Sdept,Sage),假定Sname也具有唯一性,那么S就有两个码,这两个码都由单个属性组成,彼此不相交。其他属性不存在对码的传递依赖与部分依赖,所以S属于3NF。同时S中出Sno、Sname外没有其他决定因素,所以S也属于BCNF。

例:关系模式SJP(S,J,P)中,S是学生,J表示课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一个名次只有一个学生(没有并列)。

/*根据语义得到的函数依赖*/
(S,J)->P;(J,P)->S

(S,J)和(J,P)都可以作为候选码,这两个码都是两个属性组成,而且它们是相交的。这个关系模式关系模式中没有属性对码的传递依赖或部分依赖,所以SJP属于3NF,而且除(S,J)和(J,P)以外没有其他的决定因素,所以SJP属于BCNF。

例:关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一个教师只教一门课,每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。

/*根据语义得到的函数依赖*/
(S,J)->T,(S,T)->J,T->J

STJ是3NF,因为没有任何非主属性对码传递依赖或部分依赖,但STJ不是BCNF关系,因为T是决定因素,而T不是码。

第6章 关系数据理论—范式的介绍相关推荐

  1. 《数据库系统概论》第六章 关系数据理论

    第六章 关系数据理论 1.函数依赖的定义:设R(U)是属性集U上的关系模式,X,Y是U的子集,且对于R(U)上任意一个可能的关系r,r中不存在两个不同的Y对应于相同的X的情况,则称Y函数依赖于X,记作 ...

  2. 第6章 关系数据理论—多值依赖和4NF

    第6章 关系数据理论-多值依赖和4NF 本篇文章全部内容来自数据库系统概论第五版-王珊.萨师煊著. 这是对自己学习的总结,如有错误,请大家指正,一起进步! 1.多值依赖 例:学校某一门课程由多个教授讲 ...

  3. (数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论

    文章目录 一:概念回顾:关系模式 二:数据依赖 三:一个例子:不遵循关系数据理论导致的问题 一句话,研究关系数据库理论就是为了设计出合适的关系模式,也即合适.高效的表 一:概念回顾:关系模式 相关文章 ...

  4. 数据库系统概论--第六章 关系数据理论

    问题的提出 一个关系模式应该是一个五元组:R(U,D,DOM,F) 这里: 关系名R是符号化 的元组语义. U为一组属性. D为属性组U中华的属性所来自的域. DOM为属性到域的映射. F为属性组U上 ...

  5. 第6章 关系数据理论 习题6

    (一)大家根据自己了解的.所使用的.所设计的数据库系统,举例说明以下术语的定义(可查阅相关材料),要求理解并熟练掌握. 1.函数依赖 设R(U)是一个属性集U上的关系模式,X和Y是U的子集.若对于R( ...

  6. 第4章 关系数据理论

    以下图片来自西安交通大学侯迪老师的ppt,仅供学习和复习使用,请勿转载或他用 4.1 数据依赖 数据依赖 通过关系中属性间值的相等与否体现出的数据间的相互依存和制约关系: 是对现实世界中事物间相互联系 ...

  7. 数据库复试--关系数据理论(主观题)

    第五章 关系数据理论 1. 在关系模式R(D,E,G)中,存在函数依赖关系{E→D,(D,G)→E},则候选码是__________,关系模式R(D,E,G)属于____________. 正确答案: ...

  8. 【数据库原理及应用】经典题库附答案(14章全)——第五章:关系数据理论

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  9. 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)

    关系数据理论 6.1 为什么要学习关系数据理论 什么是好的数据库逻辑设计 什么是数据依赖 关系模式的简化表示 6.2 规范化 - 关系的规范化理论 6.2.1 函数依赖 1.函数依赖 2.平凡函数依赖 ...

最新文章

  1. 调和油、色拉油、花生油哪种吃着好
  2. C#函数式编程之标准高阶函数
  3. shiro表单登录认证及退出(自定义form认证器)
  4. Linux 运维日常 40 个命令汇总
  5. 使用命令行结合jq提取出Kubernetes配置文件里的secret信息
  6. 当女朋友生气了而你却没发现 !!!
  7. AaronYang WCF教程目录
  8. 小程序开发过程注意事项
  9. VS Code常用快捷键汇总
  10. 在线开关MySQL5.7 GTID_MySQL 5.7 在线启用和关闭GTID
  11. ultrascale和arm区别_UltraScale+MPSoC软硬件设计及入门套件
  12. spss分析方法-相关分析(转载)
  13. 微分方程模型_MIT—微分方程笔记03 一阶线性常微分方程解法
  14. SNIP验证EDI文件
  15. 交流电机,如何用低成本的方案测试电机堵转?
  16. java课程设计中国象棋对弈xitong_java课程设计中国象棋对弈系统txt
  17. free掉结点一定会造成断链吗?
  18. XyplayerX4.0 影视解析源码+解析接口+安装步骤
  19. 自动调度属于计算机领域的,调度自动化
  20. 批量修改文件内容(Python版)

热门文章

  1. 虚拟机给openwrt添加硬盘并且配置smb
  2. 团队任务5:项目总结
  3. Html5-------合并单元格
  4. 曝 OPPO 给离职员工补发年终奖,此前遭克扣
  5. 201771010137 赵栋《面向对象程序设计(java)》第十八周学习总结
  6. 听云短信接口安全测试,你的短信接口到底有多危险,可能瞬间损失过万,短信接口防盗刷测试
  7. The following packages have unmet dependencies: build-essential : Depends: libc6-dev but it is not
  8. 对平稳马尔可夫链(stationary distribution of a Markov chain)的学习
  9. 视频监控系统及系统各节点设备理解和监控系统发展简介
  10. 不能打开到主机的连接, 在端口 1521: 连接失败