c#先进行uri解码_专业解码 | 带你认识关系数据库中的范式

最新

动态

实时

资讯

部门

通知

专业

速递

导语

411279b3-af39-eb11-8da9-e4434bdf6706.svg

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

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

一、范式的基本概念

421279b3-af39-eb11-8da9-e4434bdf6706.svg 431279b3-af39-eb11-8da9-e4434bdf6706.svg

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

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

421279b3-af39-eb11-8da9-e4434bdf6706.svg 431279b3-af39-eb11-8da9-e4434bdf6706.svg

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。

三、实战训练

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

f30cb507773b9ea58e8c2b32a58917e5.gif f30cb507773b9ea58e8c2b32a58917e5.gif

关系模式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模式。

f30cb507773b9ea58e8c2b32a58917e5.gif f30cb507773b9ea58e8c2b32a58917e5.gif 122e24ee94628b95161b385bc3eebb24.gif 531279b3-af39-eb11-8da9-e4434bdf6706.svg

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

541279b3-af39-eb11-8da9-e4434bdf6706.svg

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

 print("END")

审核:孙小涵

编辑:吴尘   王登科

相关动态:

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

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

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

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

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

61a88195f129238cf81c7b45265026a8.png

温州职业技术学院

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

我们发布最新的专业动态

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

让技术成就你的梦想!!

投稿邮箱:1873395014@qq.com

~欢迎大家踊跃投稿~

b634bf1af251424e3910426d22b09237.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值