关系规范化练习

实验三 关系规范化
1. 实验目的
1) 了解函数依赖的基本概念。
2) 能正确判断某一关系是属于第几范式。
3) 掌握规范化范式的方法
2. 实验内容
1) 复习函数依赖,数据规范化,范式的基本概念以及各级范式的判别标准。
2) 判断给定的表满足哪级范式的条件。
3) 将给定的表转换成满足特定等级范式条件的表。
3. 实验步骤
1) 写出函数依赖,数据规范化,范式的定义以及各级范式的判别标准。
答:1.RU)是属性U上的关系模式。XYU的子集。若对于RU)的任意一个可能的关系RR中不可能存在两个元组X属性值相等,而在Y上的属性值不等,则称X函数确定Y,即Y函数依赖于X
2.数据规范化就是通过对数据的规范消除函数依赖中一些不好的性质。
3.关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同的范式,满足最低要求的为第一范式,在第一范式中满足进一步要求的为第二范式,接下来是第三范式,第四范式等。
4.各级范式的判别标准是:满足最低要求的式第一范式,在第一范式中消除对码的部分函数依赖为第二范式,基于第二范式,消除非主属性对码的传递函数依赖为第三范式,消除非平凡且非函数依赖的多值依赖为BCNF范式。
2) 有表3-1所示的项目表1,判断其是否满足第一范式的条件,并说明理由

PHP?refimg= + this.src)" border="0" alt="" src="http://img.jb51.cc/vcimg/static/loading.png" src="http://img1.51cto.com/attachment/201005/201005111273567603681.png">

答:该表不满足第一范式。因为第一范式满足最低要求的,也就是说只要是一个基本的简单表就满足第一范式。但是该表中出现了表中有表的情况。不是一个基本的简单表,也不满足第一范式。
3) 有表3-2所示的项目表2,判断其是否满足第二范式的条件,并说明理由。

PHP?refimg= + this.src)" border="0" alt="" src="http://img.jb51.cc/vcimg/static/loading.png" src="http://img1.51cto.com/attachment/201005/201005111273567470768.png">

答:该表的码为(项目代号,职工代码
函数依赖有
项目代号,职员代码 →部门(P)
职员代码→部门(F
项目代码,职员代码→累计工作时间(F)
存在部分函数依赖于码,所以该表不属于第二范式。
4) 有表3-3所示的职员表,判断其是否满足第三范式的条件,并说明理由

PHP?refimg= + this.src)" border="0" alt="" src="http://img.jb51.cc/vcimg/static/loading.png" src="http://img1.51cto.com/attachment/201005/201005111273567225806.png">

答:该表的码为:职员代码
函数依赖有:
职员代码→部门,部门负责任代码F
职员代码→部门,部门→部门负责人代码F
部门→部门负责人代码F
存在非主属性组对码的传递函数依赖。即部门,部门负责人对职员代码的传递函数依赖,所以该表不属于第三范式。
5) 有表3-4所示的项目表3,判断其是否满足第三范式的条件

PHP?refimg= + this.src)" border="0" alt="" src="http://img.jb51.cc/vcimg/static/loading.png" src="http://img1.51cto.com/attachment/201005/201005111273567355436.png">

答:该表的码为:
项目代码,职员代码
存在的函数依赖关系有:
项目代码,职员代码→职员姓名,累计工作时间(P)
项目代码,职员代码→累计工作时间(P
职员代码→职员姓名,累计工作时间(F)
此表中不存在非主属性组对码的传递函数依赖。所以该表属于第三范式

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...