实验三 关系规范化<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1. 实验目的
1) 了解函数依赖的基本概念。
2) 能正确判断某一关系是属于第几范式。
3) 掌握规范化范式的方法。
2. 实验内容
1) 复习函数依赖,数据规范化,范式的基本概念以及各级范式的判别标准。
2) 判断给定的表满足哪级范式的条件。
3) 将给定的表转换成满足特定等级范式条件的表。
3. 实验步骤
1) 写出函数依赖,数据规范化,范式的定义以及各级范式的判别标准。
答:1.设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系R,R中不可能存在两个元组在X的属性值相等,而在Y上的属性值不等,则称X函数确定Y,即Y函数依赖于X。
2.数据规范化就是通过对数据的规范消除函数依赖中一些不好的性质。
3.关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同的范式,满足最低要求的为第一范式,在第一范式中满足进一步要求的为第二范式,接下来是第三范式,第四范式等。
4.各级范式的判别标准是:满足最低要求的式第一范式,在第一范式中消除对码的部分函数依赖为第二范式,基于第二范式,消除非主属性对码的传递函数依赖为第三范式,消除非平凡且非函数依赖的多值依赖为BCNF范式。
2) 有表3-1所示的项目表1,判断其是否满足第一范式的条件,并说明理由。
答:该表不满足第一范式。因为第一范式满足最低要求的,也就是说只要是一个基本的简单表就满足第一范式。但是该表中出现了表中有表的情况。不是一个基本的简单表,也不满足第一范式。
3) 有表3-2所示的项目表2,判断其是否满足第二范式的条件,并说明理由。
答:该表的码为(项目代号,职工代码)
函数依赖有
项目代号,职员代码 →部门(P)
职员代码→部门(F)
项目代码,职员代码→累计工作时间(F)
存在部分函数依赖于码,所以该表不属于第二范式。
4) 有表3-3所示的职员表,判断其是否满足第三范式的条件,并说明理由。
![](https://i-blog.csdnimg.cn/blog_migrate/0eef77739ca71994df767ea540e6add1.png)
答:该表的码为:职员代码
函数依赖有:
职员代码→部门,部门负责任代码(F)
职员代码→部门,部门→部门负责人代码(F)
部门→部门负责人代码(F)
存在非主属性组对码的传递函数依赖。即部门,部门负责人对职员代码的传递函数依赖,所以该表不属于第三范式。
5) 有表3-4所示的项目表3,判断其是否满足第三范式的条件,
![](https://i-blog.csdnimg.cn/blog_migrate/b2660035ac4c70141f31918b3ddaf569.png)
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
答:该表的码为:
项目代码,职员代码
项目代码,职员代码
存在的函数依赖关系有:
项目代码,职员代码→职员姓名,累计工作时间(P)
项目代码,职员代码→职员姓名,累计工作时间(P)
项目代码,职员代码→累计工作时间(P)
职员代码→职员姓名,累计工作时间(F)
此表中不存在非主属性组对码的传递函数依赖。所以该表属于第三范式
。
转载于:https://blog.51cto.com/tongxl777/314116