软考53-上午题-【数据库】-关系模式的范式

一、范式

关系模式的规范化标准,达到范式的关系才是规范化的。

1-1、目前有6种范式:

  • 第一范式:1NF;(满足最低要求)
  • 第二范式:2NF;(在第一范式的基础上进一步的满足一些要求)
  • 第三范式:3NF;
  • BC范式:BCNF;
  • 第四范式:4NF;
  • 第五范式:5NF;

各范式之间存在的联系:

1-2、规范化

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

判断范式,第一步:求出候选码,并将主属性、非主属性分开。

1-3、第一范式

1NF——>2NF,要解决部分函数依赖。 

反例:

改进方式:

1-3-1、数据冗余 

示例:表中学生信息重复

1-3-2、更新异常

1、修改异常

基于数据冗余引起的修改异常。

2、插入异常

理应能插入的信息,实际却不能插入,如下所示:

实体完整性约束:

关系中,主码的值不能为空或部分为空,多个属性构成的主码,不能部分为空。

此时,若是只想在表中插入课程信息:课程号、课程名,则会破坏实体完整性。因为学生信息为空。但是一般的逻辑是:先有课程,再让学生选择课程。

3、删除异常

 把不该删除的数据删除了,如下所示:

若是只想删除课程信息,却把与之相关的学生信息也删除了。

1-4、第二范式

【回顾】:

第一范式存在的问题:

        部分函数依赖。

部分函数依赖,导致的结果:

数据冗余、更新异常(插入、删除、修改)

第一范式,消除部分函数依赖的问题,得到:第二范式。

1-4-1、第二范式的定义

示例:

 问题的解决:规范化,即:分解。

1-4-2、关系模式的分解

将一个关系模式分解为多个关系模式,相应的,原来存储在一个二维表中的数据就要分散到多个二维表中。要使这个分解有意义,起码要求:后者不能丢失前者的信息(无论是表,还是关系,都不能丢失)

1-4-3、消除部分函数依赖

示例:

此时R1,R2,R3符合第二范式的定义。 

单个属性作为候选码的时候,不存在部分函数依赖。

候选码为属性组合的时候,存在部分函数依赖。

1-4-4、第二范式存在的问题

属于2NF的关系模式R也存在问题:数据冗余更新异常

因为:传递函数依赖

示例:

此时,R1存在的传递函数依赖,如下:

1、R1的数据冗余问题:

若是多个学生都属于同一个学院,则:学院信息和院长信息会重复多次。

2、R1的更新异常问题 
2-1、修改异常

若是R1中要修改周八院长的信息,则需要修改多次,可能导致一部分数据修改,一部分没有修改,则会出现修改的不一致性。

2-2、插入异常

若是只想新增一个学员信息:学院、院长,但是没有学生信息,则不能插入,因为R1中学号是主键。

2-3、删除异常

若是只是删除学生信息,或是,只是删除学员信息,关联的学院或学生信息都会被删除,这是不恰当的。

第二范式,规范化(关系模式的分解),消除传递函数依赖, 得到:第三范式。

1-5、第三范式

1-5-1、第三范式的定义

1-5-2、消除传递函数依赖

示例:R1

将R1中的院长拆分出去,此时关系:学号——>院长、学院——>院长也从R1中删除了。

保留关系:学院——>院长(若是保留学号——>院长,则还是存在传递依赖。)

以上,是R1中存在单个传递函数依赖问题的解决;

 

若是R1中存在多个传递函数依赖呢?如下所示: 

此时将人数属性也放到新的分解表中:

也就是说,若是存在如下情况的传递函数依赖:

X——>Y,Y——>Z1, Y——>Z2,Y——>Z3

此时,将Y、Z1、Z2、Z3都放到新的分解表中。

分解完成后,符合第三范式的示例:

此时,所有的表中,都满足:

1、非主属性,完全依赖于,主属性;

2、非主属性,非传递依赖于,主属性。

1-5-3、第三范式存在的问题

属于第三范式的关系模式R可能存在:主属性的部分函数依赖、传递依赖。

属于第三范式的关系模式R可能存在:非主属性对码的部分函数依赖、传递依赖。

示例:(前提:每个书店只有1名店长,每个店长只在一个书店)

由此可得:

先求候选码,再由此得到主属性、非主属性。 

第一范式:R中每个属性A的值域只包含原子项。 

第二范式:每个非主属性,都完全依赖于,候选码。

第三范式:每个非主属性,都非传递依赖于,候选码。

由此可知,改表格符合第三范式。

1、数据冗余

若是书店1有100本不同的书,则店长张三的姓名要重复100次。

有了数据冗余,就有更新异常。

2、更新异常
2-1、修改异常

修改店长张三的值,修改不彻底,导致数据的不一致性。

2-2、插入异常

此时,有2个主码,三个主属性。

若是只想插入书店的信息,没有店长和图书信息,则不能添加。

2-3、删除异常

想要删除一本书的信息,对应的这条数据整个删除后,店长和书店的信息也没有了。

出现这些问题的原因:主属性对码的部分函数依赖、传递依赖。

示例:

书店,依赖于店长,店长是候选码(店长,图书)的部分;

店长,依赖于书店,书店是候选码(书店,图书)的部分。

解决方式:第三范式,消除主属性的部分函数依赖、传递依赖,升级到:BC范式。

1-6、BC范式

1-6-1、BC范式的定义

一个满足BC范式的关系模式,有如下特点:

一个满足BC范式的关系模式R已消除了插入和删除异常。

1-6-2、消除主属性对码的部分函数依赖、传递依赖

1-7、多值依赖和第四范式

1-7-1、多值依赖 

示例:

一门课程,对应多个任课老师;

一门课程,对应多本参考书;

1-7-2、第四范式的定义

看到多值依赖,想到第四范式;(考的极少,简单了解即可)

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值