关系模式规范化的方法什么是关系模式的规范化•所谓关系模式的规范化,就是对关系模式进行某种处理,使它满足一定的规范化要求。关系模式规范化的形式划分•关系模式规范化的形式可以分成六级,每一级称为一个范式,记为XNF,其中X表示级别,NF就是范式(NormalForm)。第一级范式第二级范式第三级范式第四季范式第五级范式第六级范式第一范式(1NF)•如果一个关系模式R的每个属性的域都只包含单纯值,而不是一些值的集合,则称R满足第一范式。职工号姓名职称工资扣除实发基本工龄职务房租水电860陈平讲师80520506012803………………………第一范式其实就是一张二维表作为关系的一个最起码的要求。不满足第一范式的要求就不能称为关系,例如下表第二范式(2NF)•如果关系模式R满足第一范式,且它的任意非关键字属性都函数依赖于任一候选关键字,则称R满足第二范式。函数依赖•如果对于属性A,有且只有一个属性B与之对应,也就是说,A决定了B,我们就说B函数依赖于A。•只能根据现实需求来确定一个函数依赖。例如姓名确定年龄这个函数依赖只有在该学校没有同名人的条件下成立。如果允许有同名人,则年龄就不再函数依赖于姓名了。当然这些也是设计者对现实世界作强制的规定而已。例如规定不允许同名人出现,因而使姓名确定年龄函数依赖成立。•函数依赖不是指二维表(关系模式)的某个或某些记录满足的约束条件,而是指表中一切记录均要满足的约束条件。•例:R1(姓名,学号,出生日期,课程编号,课程名),学号是候选关键字。请分析该关系数据库是否满足第二范式。我们可以先根据给出的关系模式构建二维表;根据实际情况构建数据。得出如下表:姓名学号年龄课程编号课程名陈军00115C101数据管理技术陈军00115C102多媒体技术应用陈军00115C105人工智能初步……………•上表每个属性都是单纯值,满足第一范式•对应一个“学号”(001),有且只有一个“姓名”(陈军)、“年龄”(15)与之对应。所以“姓名”、“年龄”函数依赖于“学号”。•对应一个“学号”,并不是有且只有一个“课程编号”与之对应。例如学号001,我们发现有的记录以c101与之对应;有的记录却又以C102与之对应,也就是说不是表中一切满足学号是001的记录均满足有且只有唯一的一个课程编号与之对应,所以“课程编号”并不依赖于“学号”。•我们可以用同样的方法分析出“课程名”并不依赖于“学号”•因为存在非关键字属性不依赖于候选关键字的情况,所以R1不满足第二范式。一个关系模式R不属于2NF,以下几个问题就会非常严重:•插入异常•删除异常•修改复杂第三范式(3NF)•如果关系模式R满足第二范式,且每一个非关键字属性不传递依赖于任一候选关键字,则称R满足第三范式。传递依赖•对于属性A、B、C,如果B依赖于A,C依赖于B,则称C传递依赖于A。分析关系数据库是否满足第三范式的方法•同样可以使用构建数据表和记录的方式进行具体分析。首先分析该二维表(关系模式)是否满足第一、第二范式。最后再根据第三范式的定义判断是否存在传递依赖现象。•满足第三范式要求的关系模式中都不存在传递依赖现象,消除了数据冗余。