• 搜索
  •  找回密码
     立即注册

    QQ登录

    只需一步,快速开始

  • 登录
  • 注册
  • 找回密码
  • 管理
圈内事儿文章详情

专业解码|带你认识关系数据库中的范式

2020-12-05阅读 1467 币圈动向 我要关注


最新

动态



实时

资讯



部门

通知



专业

速递






导语



爱学习的小伙伴们,在学习专业知识的你们,是否有过困惑与不解,不要着急,本栏目致力于为同学们指路迷津!

《专业速递》——带你了解大数据的魅力!



一、范式的基本概念

关系数据库的关系要满足一定的要求 。若关系满足不同程度的要求,就称它属于不同的范式(NORMAL FORM)。范式是关系模式满足不同程度规范化要求标准满足最低要求的范式属于第一范式,简称1NF;在第一范式中进一步满足一下要求的想属于第二范式,简称2NF,以此类推,还有3NF ,BCNF,4NF,5NF

下面我们举例介绍第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。



01

第一范式

定义:如果一个关系模式R的所有属性都是不可再分的基本数据项,则R属于1NF。

数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型实数字符型逻辑型日期型等。

第一范式是关系模式的最低要求,但仅仅满足第一范式是不够的。


02

第二范式

定义:如果一个关系模式R中的每一个非主属性完全函数依赖于任一个候选码,则R属于2NF。

定义中科院看出,若是某个1NF的关系的主码只由一个列注册,那么这个关系就是2NF关系。都是,如果主码是由多个属性列沟通构成的复合主码,并且存在非主属性对属性的部分函数依赖,则关系就不是2NF关系

03

第三范式

定义:如果一个关系模式R中每一个非主属性对任何候选码的不存在传递信赖,则R 属于3NF。

所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:

关键字段→非关键字段x→非关键字段y


二、案例解析

是否符合第一范式

下面的数据库表是符合第一范式的:

             (字段1 字段2 字段3 字段4)

而这样的数据库表是不符合第一范式的:

(字段1 字段2 字段3 字段4 字段3.1 字段3.2)


将非2NF变为2NF

SA(学号,姓名,系名,系主任,课程号,成绩)

这个数据库表不满足第二范式,因为存在如下决定关系:

非主属性姓名仅函数依赖于学号,也就是姓名部分函数依赖于主码(学号,课程号)而不是完全依赖

非主属性系名仅函数依赖于学号,也就是姓名部分函数依赖于主码(学号,课程号)而不是完全依赖

即存在非主属性部分函数依赖于主码,所以选课表不满足第二范式,不是2NF。

可以用模式分解的方法将非2NF 的关系模式分解为多个2NF的关系模式。

将SA分解为两个关系模式:

SC(学号,课程号,成绩),主码为(学号,课程号)

SD(学号,姓名,系名,系主任),主码为学号

可以看出,SC和SD均满足第二范式。


第三范式案例

学生关系表(学号,姓名,年龄,所在学校,学校地址,学校电话),主码为"学号",因为非主属性完全依赖于主码

这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:

(学号) → (所在学院) → (学院地点,学院电话)

即存在非主属性"学院地点"、"学院电话"对主码"学号"的传递函数依赖。

所以学生关系表不是3NF关系。为了消除传递依赖,将学生关系表分解成两个关系模式:

学生:(学号,姓名,年龄,所在学院);

学院:(学院,地点,电话)。

最终,在这两个关系模式组成的关系模式中消除了传递依赖,达到了3NF。


三、实战训练

学了前面的三种范式,我们也来测试一下吧,让我们看看你是否真正的掌握了这些知识。

关系模式R(S#,C#,GRADE,TNAME,TADDR),其属性分别表示学生学号、选修课程的编号、成绩、任课教师姓名及地址等意义。如果规定,每个学生,每学一一门课只有一一个成绩;每门课只有一个教师任教;每个教师只有一个地址(此处不允许教师同名同姓)。


(1)试写出关系模式R基本的函数依赖和候选码


(2)试把R分解成2NF模式集并说明理由。


(3)试把R分解成3NF模式集,并说明理由。





1)GRADE对(S#, C#)完全函数依赖,TNAME对C#完全函数依赖,TADDR对TNAME完全函数依赖。侯选码是(S#, C#)。



(2)SC = {S#,C#, GRADE} C = {C#, TNAME, TADDR}

理由:在模式R中,TNAME不完全依赖于码(S#, C#),因此需进行分解,可分解为下列两个关系。SC = {S#,C#, GRADE} C = {C#, TNAME, TADDR}分解后,SC中,GRADE 完全依赖于侯选码(S#, C#),在C中,主属性是C#,TNAME、TADDR均完全依赖于C#。因此,该分解符合2NF模式。



(3)SC= {S#, C#,GRADE}, CT (C#, TNAME),T(TNAME, TADD) 

理由:3NF:若每个关系模式是2NF,则每个非主属性都不传递于R的候选码。按上述已分好的两个模式,SC中已满足“每个非主属性都不传递于R的候选码”,已是3NF,而在C中,C#→TNAME, TNAME > TADDR, TADDR传递依赖于C#因此还需分成两个模式:CT (C#,TNAME),T (TNAME, TADD)分解后,总共有SC= {S#, C#,GRADE}, CT (C#, TNAME),T(TNAME, TADD)三个模式。该分解符合3NP模式。


今天有关数据库的学习就告一段落了,希望大家以后碰到有关范式的题目能够又快又高效的完成。

信息来源:温职院大数据专业综合部


 print("END")


审核:孙小涵

编辑:吴尘   王登科

相关动态:

• 喜讯 | 我系大数据专业学生在Python程序设计大赛决赛取得好成绩!

• 资讯 | 通过大数据3大布局抢占造富机会

• 专业解码 | 让你真正明白Python的列表基础

• 资讯 | 避免"大数据杀熟"如何打破"信息茧房"?

• 新闻 | “爱驻夕阳,关爱老人” 大数据专业学生综合部关爱老人志愿者活动!


温州职业技术学院

大数据技术与应用专业学生综合部

我们发布最新的专业动态

我们分享最受关注的实时资讯

让技术成就你的梦想!!

投稿邮箱:1873395014@qq.com

~欢迎大家踊跃投稿~




炒币助手
  • 加入新手交流群:币种行情分析、币圈热点解读
  • 添加助理微信,一对一专业指导:sokeol
  • 上一篇:2021S1UQ理工科选课指南|文末可进学科群

    下一篇:打工仔大翻身赵毅(我就是豪门)#问号

    分享到:

    相关文章