Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3976197
  • 博文数量: 408
  • 博客积分: 10227
  • 博客等级: 上将
  • 技术积分: 9820
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 21:48
个人简介

非淡泊无以明志,非宁静无以致远

文章存档

2022年(1)

2021年(1)

2020年(2)

2019年(5)

2018年(4)

2017年(3)

2016年(24)

2015年(8)

2014年(7)

2013年(3)

2012年(1)

2011年(23)

2010年(179)

2009年(147)

分类: 数据库开发技术

2010-03-18 22:55:26

1.第一范式(1NF

定义1:如果关系模式R中不包含多值属性,则R满足第一范式(First Normal Form),记作:

R1NF

1NF是对关系的最低要求,不满足1NF的关系是非规范化的关系。

2.第二范式(2NF

定义1:设XY是关系R的两个不同的属性或属性组,且X Y。如果存在X的某一个真子集X’,使X Y成立,则称Y部分函数依赖于X,记作:X  P YPartial)。反之,则称Y完全函数依赖于X,记作:X  F Y Full

定义2:如果一个关系 R1NF,且它的所有非主属性都完全函数依赖于R的任一候选码,则R属于第二范式,记作:R2NF

说明:上述定义中所谓的候选码也包括主码,因为码首先应是候选码,才可以被指定为码。

例如关系模式:

职工(职工号,姓名,职称,项目号,项目名称,项目角色)中

(职工号,项目号)是该关系的码,而职工号→姓名、职工号→职称、项目号→项目名称…

所以(职工号,项目号)P 职称、(职工号,项目号)P 项目名称

故上述职工关系不符合第二范式要求。它存在三个问题:插入异常、删除异常和修改异常。

其中修改异常是这样的,当职工关系中项目名称发生变化时,由于参与该项目的人员很多,每人一条记录,要修改项目信息,就得对每一个参加该项目的人员信息进行修改,加大了工作量,还有可能发生遗漏,存在着数据一致性被破坏的可能。

可把上述职工关系分解成如下三个关系:

职工(职工号,姓名,职称)

参与项目(职工号,项目号,项目角色)

项目(项目号,项目名称)

上述三个关系都符合定义2的要求,所以都符合2NF

推论:如果关系模式R1NF,且它的每一个候选码都是单码,则R2NF

符合第二范式的关系模式仍可能存在数据冗余、更新异常等问题。如关系

职工信息(职工号,姓名,职称,系名,系办地址)

虽然也符合2NF,但当某个系中有100名职工时,元组中的系办地址就要重复100次,存在着较高的数据冗余。原因是关系中,系办地址不是直接函数依赖于职工号,而是因为职工号函数决定系名,而系名函数决定系办地址,才使得系办地址函数依赖于职工号,这种依赖是一个传递依赖的过程。

所以,上述职工信息的关系模式还需要进一步的规范化。

3.第三范式(3NF

定义1:在关系R中,XYZR的三个不同的属性或属性组,如果XYYZ  YX,且Y不是X的子集,则称Z传递函数依赖于X

定义2:如果关系模式R2NF,且它的每一个非主属性都不传递依赖于任何候选码,则称R是第三范式,记作:R3NF

推论1:如果关系模式R1NF,且它的每一个非主属性既不部分依赖、也不传递依赖于任何候选码,则R3NF

推论2:不存非主属性的关系模式一定为3NF

4.改进的3NF——BCNFBoyeeCodd Normal Form

定义:设关系模式RUF)∈1NF,若F的任一函数依赖XYY X)中X都包含了R的一个码,则称RBCNF

换言之,在关系模式R中,如果每一个函数依赖的决定因素都包含码,则RBCNF

推论:如果RBCNF,则:

Ø         R中所有非主属性对每一个码都是完全函数依赖;

Ø         R中所有主属性对每一个不包含它的码,都是完全函数依赖;

Ø         R中没有任何属性完全函数依赖于非码的任何一组属性。

定理:如果RBCNF,则R3NF一定成立。

证明:(结合传递依赖的定义,用反证法)

注意:当R3NF时,R未必属于BCNF。因为3NFBCNF放宽了一个限制,它允许决定因素不包含码。例如:

通讯(城市名,街道名,邮政编码)中:

F={(城市名,街道名)→邮政编码,邮政编码→城市名}

非主属性邮政编码完全函数依赖于码,且无传递依赖,故属于3NF,但邮政编码也是一个决定因素,而且它没有包含码,所以该关系不属于BCNF

又如:

TeachingStudentTeacherCourse 简记为TeachingSTC

规定:一个教师只能教一门课,每门课程可由多个教师讲授;学生一旦选定某门课程,教师就相应地固定。

F={TC,(SC)→T,(ST) C

该关系的候选码是(SC)和(ST),因此,三个属性都是主属性,由于不存在非主属性,该关系一定是3NF。但由于决定因素T没包含码,故它不是BCNF

关系模式Teaching仍然存在着数据冗余问题,因为存在着主属性对码的部分函数依赖问题。

确切地表示:F={TC,(SCPT,(ST) PC

所以Teaching关系可以分解为以下两个BCNF关系模式:

TeacherTeacherCourse      StudentStudentTeacher

3NF的“不彻底”性,表现在可能存在主属性对码的部分依赖和传递依赖。

一个关系模式如果达到了BCNF,那么,在函数依赖范围内,它就已经实现了彻底的分离,消除了数据冗余、插入和删除异常。

阅读(2809) | 评论(0) | 转发(0) |
0

上一篇:SCI全能服务系统

下一篇:顺序表及其举例

给主人留下些什么吧!~~