四、设计案例
举例:下表不符合第一范式的关系
教师代码
姓名
职称
系
电话
研究课题
研究课题号
研究课题名
1101
王一丽
教授
管理系
3324
500
管理信息
1102
刘 明
副教授
管理系
3324
800
金融工程
1254
李爱军
讲师
投资系
3341
630
电子商务
由非1NF规范化为1NF,
符合第一范式的关系
教师代码
姓名
职称
系
电话
研究课题号
研究课题名
1101
王一丽
教授
管理系
3324
500
管理信息
1102
刘 明
副教授
管理系
3324
800
金融工程
1254
李爱军
讲师
投资系
3341
630
电子商务
由1NF规范化为2NF,
上表中关系满足1NF,但不满足2NF。在表中,“教师代码”和“研究课题号”共同组成主关键字,“姓名”、“职称”和“研究课题名”是非主属性。非主属性(职称、职称、研究课题名)不完全依赖于由教师和课题代码组成的主关键字。其中,“姓名”和“职称”只依赖于主关键字的一个分量——“教师代码”,而“研究课题名”只依赖于主关键字的另一个分量——“研究课题号”。这种关系会引发下列问题,
数据冗余:当某个教师有多项研究课题时,必须有多条记录,而这多条记录中,该教师的姓名和职称数据项完全相同。
插入异常:当新调入一个教师时,只有教师代码、姓名、职称的信息,没有研究课题的信息,而研究课题号是主关键字之一,缺少时无法输入该教师信息。反之,当插入一个新的研究课题时也往往缺少相应的教师代码,以致无法插入。
删除异常: 当删除某个教师的信息时,常常会丢失研究课题的信息。
解决的方法是将一个非2NF的关系模式分解为多个2NF的关系模式。在本例中,可将关分解为如下三个关系,
教师关系:教师代码、姓名、职称、教师所在系、电话;
课题关系:研究课题号、研究课题名;
 教师与课题关系:教师代码、研究课题号。
这些关系与课题符合2NF要求。
上表符合第二范式,但是不符合第三范式
教师代码
姓名
职称
系
电 话





由2NF规范化为3NF,
 这样的关系同样存在着高度冗余和更新异常问题。消除传递依赖关系的办法是将关系分解为如下几个3NF关系,
教师关系:教师代码、姓名、职称、电话;
课题关系:研究课题号、研究课题名;
教师与课题关系:教师代码、研究课题号。
3NF消除了插入异常、删除异常、数据冗余及修改复杂等问题,已经是比较规范的关系。