范式

  • 范式是符合某一种级别的关系模式的集合。
  • 范式的种类:    第一范式(1NF) ,第二范式(2NF) ,第三范式(3NF) ,BC范式(BCNF) ,第四范式(4NF) ,第五范式(5NF)

第一范式

  • 作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个条件的关系 模式就属于第一范式(1NF) 。即不能表中包含表。
  • S-L-C(Sno,Sdept,Sloc,Cno,Grade) 例如这组关系,Sno表示学号,Sdept表示系名,Sloc为学生的住处,Cno表示选修课程号,Grade表示成绩。这些属性都是不可分的数据项。

第二范式

  • 候选码:若关系中的某一属性组的值能唯一标识一个元组,而其子集不能,则称该属性组为候选码。
  • 若关系模式R∈1NF,并且每一个非主属性 都完全函数依赖于任何一个候选码,则R∈2NF 。

[例]  S-L-C(Sno,Sdept,Sloc,Cno,Grade), Sloc为学生的住处,并且每个系的学生住在同一个 地方。

S-L-C的码为(Sno,Cno)。

函数依赖有

(Sno,Cno)F→Grade

Sno→Sdept, (Sno,Cno)P→Sdept

Sno→Sloc, (Sno,Cno)P→Sloc

Sdept→Sloc

  • 非主属性Sdept、Sloc并不完全依赖于码
  • 关系模式S-L-C不属于2NF

一个关系模式不属于2NF会产生一些问题,例如如果插入一个新学生,但该生未选课,即该生无Cno, 由于插入元组时,必须给定码值,因此插入失败。

出现这种问题的原因是例子中有两类非主属性:

  • 一类如Grade,它对码完全函数依赖
  • 另一类如Sdept、Sloc,它们对码不是完全函数依赖

第三范式

  • 用投影分解把关系模式S-L-C分解成两个关系模式

    • SC(Sno,Cno,Grade)
    • S-L(Sno,Sdept,Sloc)

  • SC的码为(Sno,Cno),SL的码为Sno,这样使得非主属 性对码都是完全函数依赖了 。符合第二范式的要求。
  • 即使是这样,仍然会产生插入问题,例如学校新增了一个系和住处,在关系模式S-L(Sno,Sdept,Sloc) 中由于没有学号导致无法插入新的系和住处。
  • 产生这个问题的原因是因为在关系模式中S-L(Sno,Sdept,Sloc)存在着传递依赖,S-L中Sno →Sdept( Sdept ↛ Sno), Sdept→Sloc,可得Sno  →  Sloc。

为了解决第二范式中的问题就有了第三范式,3NF消除了传递依赖。

  • 定义: 设关系模式R<U,F>∈1NF,若R中不存在 这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使 得X→Y,Y→Z成立,Y ↛ X不成立,则称 R<U,F> ∈ 3NF。
  • 解决的办法是将S-L分解成
    • S-D(Sno,Sdept)∈ 3NF
    • D-L(Sdept,Sloc)∈ 3NF
  • 通过这个办法就可以单独插入系和住处的数据。

BCNF范式

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

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

  • 由语义可得到函数依赖:(S,J)→T;(S,T)→J;T→J ,其中码是(S,J)或者(S,T)​​​​​​​

    • 一个学生选了一门课就对应一个老师
    • 一个学生加上一个老师就对应一门课
    • 一个老师可以决定一门课
    • 因为没有任何非主属性对码传递依赖或部分依赖,STJ ∈ 3NF
    • T是决定因素,而T不包含码,所以STJ 不属于 BCNF关系
    • 对于不是BCNF的关系模式,仍然存在不合适的地方
    • 非BCNF的关系模式也可以通过分解成为BCNF。 例如STJ可分解为ST(S,T)与TJ(T,J),它们都是 BCNF
  • 总结
    • 如果一个关系数据库中的所有关系模式都属于 BCNF,那么在函数依赖范畴内,它已实现了模式 的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。

关系数据库理论-范式相关推荐

  1. 关系数据库的范式和反范式

    为什么80%的码农都做不了架构师?>>>    范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结 ...

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

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

  3. 【数据库系统】数据库系统概论====第六章 关系数据库理论

    第六章 关系数据库理论 文章目录 第六章 关系数据库理论 6.1问题的提出 6.2规范化 6.2.1函数依赖 6.2.2码 6.2.3范式 6.2.4 2NF 6.2.5 3NF 6.2.6 BCNF ...

  4. 《SQL与关系数据库理论——如何编写健壮的SQL代码》一第3章

    本节书摘来华章计算机<SQL与关系数据库理论--如何编写健壮的SQL代码>一书中的第3章 ,第3.1节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区&q ...

  5. 《视图更新与关系数据库理论》——2.1 关系和关系变量

    本节书摘来自异步社区出版社<视图更新与关系数据库理论>一书中的第2章,第2.1节,作者:[美]C.J. Date(达特),更多章节内容可以访问云栖社区"异步社区"公众号 ...

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

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

  7. 《SQL与关系数据库理论——如何编写健壮的SQL代码》一第2章

    本节书摘来华章计算机<SQL与关系数据库理论--如何编写健壮的SQL代码>一书中的第2章 ,第2.1节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区&q ...

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

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

  9. 《SQL与关系数据库理论——如何编写健壮的SQL代码》一3.7 TABLE_DUM和TABLE_DEE

    本节书摘来华章计算机<SQL与关系数据库理论--如何编写健壮的SQL代码>一书中的第3章 ,第3.7节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区&q ...

最新文章

  1. Linux的cron和crontab定时任务
  2. iOS多线程中performSelector: 和dispatch_time的不同
  3. 世界级安全技术专家力作——《Linux防火墙》
  4. Exchange2003中实现两个邮件系统收发邮件配置实例
  5. 【Python教程】用字典推导式将cookie字符串转化为字典的方法
  6. Mac下修改ZOC中文乱码
  7. html:(39):块级元素和内联块级元素
  8. php反序列化总结与学习
  9. phalcon执行原始SQL查询语句
  10. Java是如何实现跨平台运行的
  11. 好用的jquery.animateNumber.js数字动画插件
  12. php模拟登陆正方教务系统csdn,curl模拟登陆正方教务系统查成绩,出现Object moved to here,已登陆首页获取cookie...
  13. 面试官:ca证书存储在哪的
  14. 美丽炫酷的Html5简历网页模板
  15. 电容或电感的电压_为什么并联电容器可以提高功率因数,而串联不行?
  16. MediaSession原理以及使用
  17. android 休眠任务不执行_Android休眠机制
  18. 百度定位 Android 经纬度出现4.9E-324 问题解决
  19. WebRTC 拥塞控制 | Trendline 滤波器
  20. java map替换_在java的Map集合中,怎样更改value的值

热门文章

  1. 雄安,杭州政府自建区块链底层平台 自建、外包、加入三种模式谁是未来
  2. c++中拷贝构造函数被调用的时机
  3. 牛牛的装球游戏 (计算几何
  4. What is Logo?
  5. 《Kotlin》 Kotlin For Gank.io (干货集中营Kotlin实现)
  6. 超过20G的文件怎么保存_小白,你怎么能不尝试这款酸甜可口、做法简单的——蔓越莓饼干...
  7. VMware workstation 14 安装 iOS虚拟机
  8. 9个最好用的JavaScript开发工具和代码编辑器
  9. 全面创新:酷我音乐2013年5月14日正式版全面上线,抢先试用
  10. Android跳转到第三方APP(QQ,微信,QQ音乐,酷狗音乐)