最新
动态
实时
资讯
部门
通知
专业
速递
导语
爱学习的小伙伴们,在学习专业知识的你们,是否有过困惑与不解,不要着急,本栏目致力于为同学们指路迷津!
《专业速递》——带你了解大数据的魅力!
一、范式的基本概念
关系数据库的关系要满足一定的要求 。若关系满足不同程度的要求,就称它属于不同的范式(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
~欢迎大家踊跃投稿~