国开《数据库基础与应用》第三章 3-5-2:第三范式规范化举例

搜答案方法:电脑端按「Ctrl+F」、手机端用「页面查找」功能输入关键词查找。

3-5-2:第三范式规范化举例

例1:设一个关系为SDH=(学号,姓名,性别,籍贯,系号,系名,系地址,系电话),每个学生只能属于一个系,一个系有许多学生,每个系有对应的系号、系名、系地址和系电话,每个学生有对应的姓名、性别和籍贯。SDH关系的具体实例如下表1所示。

表1 SDH关系

学号姓名性别籍贯系号系名系地址系电话
J001张新江苏X01计算机5号楼78264315
J002刘民上海X01计算机5号楼78264315
D001王亮江西X02电子3号楼78265020
G005王京江西X04经管6号楼75320011
D006赵华陕西X02电子3号楼78265020
H002孙平河南X08化学9号楼65002033
J008陈宇上海X01计算机5号楼78264315
C004黄明山东X06财会6号楼75325424

最小函数依赖集:根据SDH关系模式和所给的语义,可得到该关系的最小函数依赖集FD为:

FD={学号→姓名,学号→性别,学号→籍贯,学号→系号,系号→系名,系号→系地址,系号→系电话}

侯选码:由学号可以直接决定姓名、性别、籍贯、系号等属性,同时学号传递决定系名、系地址、系电话等属性,学号是该关系的一个候选码,用它作为该关系的主码。由于该关系是单属性候选码,自然满足第二范式。

存在传递依赖:存在着系的各属性对学号的传递依赖。

数据冗余:对于同一个系的每个学生元组,其系名、系地址、系电话都要被存储一次,显然是冗余的。

插入异常:当新成立一个系,但暂时无学生时,因相应元组的主码为空而无法被插入到关系中。

删除异常:当同一个系的所有学生元组被删除后,描述该系的所有信息也就随之被删除掉,而在整个数据库中不复存在了。

修改异常:当一个系的地址或电话改变时,需要修改同一个系的所有元组中的系地址值或系电话值。

消除传递依赖达到第三范式的方法:消除关系中的传递依赖也是通过关系分解的方法来实现的。设一个关系为R(U),X、Y、Z、W是U的互不相交的属性子集,其中X是主码,X→Y、Y→Z都是直接函数依赖,那么X→Z就是传递函数依赖,则把R(U)分解成两个关系R1(Y,Z)和R2(X,Y,W),这样就消除了X→Z的传递函数依赖。

结合我们的例子,对SDH关系进行分解得到以下两个关系:

D=(系号,系名,系地址,系电话)

S=(学号,姓名,性别,籍贯,系号)

它们对应的最小函数依赖集分别为:

FDD={系号→系名,系号→系地址,系号→系电话}

FDS={学号→姓名,学号→性别,学号→籍贯,学号→系号}

关系投影:把SDH关系模式分解成描述系的关系模式D和描述学生的关系模式S后,再对上表所示的SDH关系实例按分解模式进行投影,得到的关系实例分别如下表2和表3所示。

表2 D系部关系

系号系名系地址系电话
X01计算机5号楼78264315
X02电子3号楼78265020
X04经管6号楼75320011
X08化学9号楼65002033
X06财会6号楼75325424

表3 S学生关系

学号姓名性别籍贯系号
J001张新江苏X01
J002刘民上海X01
D001王亮江西X02
G005王京江西X04
D006赵华陕西X02
H002孙平河南X08
J008陈宇上海X01
C004黄明山东X06

消除了数据冗余和操作异常:把原来的SDH关系规范化成第三范式后,减少了数据冗余,消除了操作异常,使得每个学生的信息、每个系的信息分别保存,并且只在相应的关系中保持一个版本,从而既能够各自独立地对每个单一关系进行查询、插入、删除和修改操作,又能够按照需要把它们通过系号属性连接起来,进行各种联合查询操作。

例2:设一个关系模式为S=(学生,教师,课程,成绩,学术分,奖金额),假定每个学生可以选修多门课程,每门课程可以由不同的学生选修,每个教师可以主讲多门课程,每门课程可以由不同教师主讲,一个学生选修一门课程有一个成绩,一个教师主讲一门课程有一个学术分,一个学术分对应一个奖金额。请把该关系模式分解为第三范式。

分析:根据所给的关系模式和语义可知,学生和课程之间、课程和教师之间都是多对多的联系,它们没有函数依赖关系,一个学生选修一门课程有一个成绩,对应的函数依赖为(学生,课程)→成绩,一个教师主讲一门课程有一个学术分,对应的函数依赖为(教师,课程)→学术分,一个学术分对应一个奖金额的函数依赖为学术分→奖金额。所以该关系模式所对应的最小函数依赖集FD为:

FD={(学生,课程)→成绩,(教师,课程)→学术分,学术分→奖金额}

关系的侯选码:由于学生、课程、教师都没有决定因素,属性子集(学生,课程,教师)能够函数决定成绩、学术分和奖金额,其中对成绩和学术分是部分决定,对奖金额是传递决定。(学生,课程,教师)属性组是关系S的一个候选码和主码。

首先消除传递依赖:消除主码到奖金额的传递依赖,得到如下两个关系模式:

S1=(学术分,奖金额)

SS=(学生,教师,课程,成绩,学术分)

接着消除部分依赖:从SS中消除(学生,课程)→成绩的部分依赖,得到如下两个关系模式:

S2=(学生,课程,成绩)

SSS=(学生,教师,课程,学术分)

再接着从SSS中消除(教师,课程)→学术分的部分依赖,得到如下两个关系模式:

S3=(教师,课程,学术分)

S4=(学生,教师,课程)

达到第三范式:至此分解完毕,最终得到S1、S2、S3和S4这4个关系,其中学术分是S1关系的主码S3关系的外码,学生和课程子集是S2关系的主码S4关系的外码,教师和课程子集是S3关系的主码S4关系的外码。在分解后得到的S1、S2、S3和S4这4个关系中,都不存在部分依赖和传递依赖,所以都达到了第三范式。

例3:根据以前介绍过的教师任课关系X为(教工号,姓名,职称,课程号,课程名,课时数,课时费),请把该关系模式分解为第三范式。

分析:曾经根据该关系的语义给出的最小函数依赖集FD为:

FD={教工号→姓名,教工号→职称,课程号→课程名,课程号→课时数,(职称,课程号)→课时费}

由教工号→职称,两边同时加上课程号得(教工号,课程号)→(职称,课程号),又(职称,课程号)→课时费,所以(教工号,课程号)→课时费是传递依赖。另外,根据关系中的伪传递性规则,由教工号→职称和(职称,课程号)→课时费,可以直接得到(教工号,课程号)→课时费是传递依赖。

侯选码:(教工号,课程号)是该关系的候选码和主码。

首先消除传递依赖:得到如下两个关系:

X1=(职称,课程号,课时费)

XX=(教工号,姓名,职称,课程号,课程名,课时数)

接着消除XX中的对课程号的部分依赖,得到如下两个关系:

X2=(课程号,课程名,课时数)

XXX=(教工号,姓名,职称,课程号)

再接着消除XXX中的对教工号的部分依赖,得到如下两个关系:

X3=(教工号,姓名,职称)

X4=(教工号,课程号)

最后得到的四个关系X1、X2、X3、X4都消除了部分依赖和传递依赖,达到了第三范式,并且可以通过主码和外码之间的自然连接,恢复为原来的一个关系。

关系中的函数依赖重要的是部分依赖和传递依赖,若消除了部分依赖,就达到了关系的第二范式,若再消除掉传递依赖,则就达到了关系的第三范式。对关系进行规范化的过程就是分解关系的过程。对关系进行连接的过程就是合并关系的过程。


「国开学习吧」:用户COOKIE有效时间30天,收藏网址『guokaixuexi.com』不迷路哦~

相关文章

国开《数据库基础与应用》第九章 9-2-3:组合框控件的使用

国开《数据库基础与应用》第九章 9-2-3:组合框控件的使用

9-2-3:组合框控件的使用组合框控件在窗体视图状态下,显示为一个文本框并且在最后位置带有一个箭头图标,单击箭头图标时打开相应的下拉列表框,用户可以从中选择一个数据值到文本框中,作为此组合框控件的当前...

国开《数据库基础与应用》第六章 6-3-2:例6-2

国开《数据库基础与应用》第六章 6-3-2:例6-2

6-3-2:例6-2要求以系统提供的“教职员”样本模板建立一个“教工管理”数据库,将其数据库文件放在“E:\ACCESS”文件夹中。具体操作步骤如下:1.启动Access 2010,如果当前功能区选项...

国开《数据库基础与应用》第四章 4-4-4:多表查询举例

国开《数据库基础与应用》第四章 4-4-4:多表查询举例

4-4-4:多表查询举例多表查询就是在一次查询中涉及到多个基本表或视图,每个基本表或视图都需要在FROM选项中列出,它们之间用逗号分开。例5:从商品表1和商品表2中查询出按商品代号进行自然连接的结果。...

国开《数据库基础与应用》第四章 4-3-4:视图的建立、修改和删除

国开《数据库基础与应用》第四章 4-3-4:视图的建立、修改和删除

4-3-4:视图的建立、修改和删除(1)视图概念视图(view)是在基本表之上建立的表,它的结构,即所有列定义取自基本表,它的内容,即所有数据行也取自基本表。基本表在数据库存储空间中有对应的存储对象,...

国开《数据库基础与应用》第四章 4-2-3:列级完整性约束

国开《数据库基础与应用》第四章 4-2-3:列级完整性约束

4-2-3:列级完整性约束在定义一个基本表中,在每个列的列名及数据类型定义的后面,还有时需要给出该列的完整性约束的定义,称此为列级完整性约束。列级完整性约束被分为以下6种情况。(1)默认值约束。表示为...

国开《数据库基础与应用》第八章 8-3-3:例8-3

国开《数据库基础与应用》第八章 8-3-3:例8-3

8-3-3:例8-3在“公司信息管理”数据库中查找雇员中姓“王”的、且1983年至1988年出生的雇员的姓名、性别、出生日期和薪水信息,并按出生日期的降序排列。具体操作步骤如下:第①和②步与例8-1...

国开《数据库基础与应用》第八章 8-1-2:利用查询向导创建不带查询条件的查询对象

国开《数据库基础与应用》第八章 8-1-2:利用查询向导创建不带查询条件的查询对象

8-1-2:利用查询向导创建不带查询条件的查询对象当采用第1种方法,点击“查询向导”图标时,将自动打开一个标题为“新建查询”的对话框,如下图2所示。图2 新建查询对话框通过查询向导可以建立简单查询、交...

国开《数据库基础与应用》第七章 7-2-1:表中的字段属性

国开《数据库基础与应用》第七章 7-2-1:表中的字段属性

7-2-1:表中的字段属性在一个表中,根据字段的数据类型不同,将需要设置不同的字段属性。例如:数据类型字段属性文本主要有字段大小、格式、输入掩码、默认值、有效性规则、有效性文本、必需、允许空字符串、索...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。