一、关系模式STC
假设有一个关系模式STC,包含有学号Sno、教师编号Tno、课程编号Cno、选课成绩G四个属性
即STC(Sno,Tno,Cno,G)
数据间的关系为
- 每个学生可选修多门课程,每门课程可以被多名学生选修
- 每个老师只能讲授一门课程,每门课程可由多名老师来讲授
- 学生选定课程就确定了授课教师,并有一个选课成绩
该关系模式中存在有哪些函数依赖?候选键是什么?主属性是什么?非主属性是什么?
二、BC范式(BCNF)
1、引言
对于关系模式STC,依旧存在着数据冗余(教师编号和课程号)、数据更新异常(无法插入老师教
授课程信息或无法取消学生选课信息或删除学生选课元组之后会丢失老师教授课程信息)
STC只所以存在这样的问题是由于
如何解决这一问题呢?
2、BC范式的定义
对于关系模式R,若,时,X必含有候选键,即R中所有非平凡的、完全的函数依
赖的决定因素是候选键,则
也就是说如果R属于BCNF,则R中没有任何属性完全函数依赖于非候选键的任何一组属性
3、分析关系模式STC
(1)在关系模式STC中,由于存在着,因此关系模式STC不属于BCNF
(2)可将决定因素不是候选键的函数依赖所涉及的属性单独构成一个关系模式,即将STC分解为TC和ST两个关系模式
则分解后的两个关系模式TC和ST均属于BCNF
(3)通过将STC分解为满足BCNF的关系模式,解决了插入教师授课信息和删除学生选课信息不
能实现的问题
4、BC范式的优点
(1)消除了“主属性对于候选键的部分函数依赖和传递函数依赖”,关系中没有任何属性完全函数
依赖于非候选键的任何一组属性
(2)进一步消除了关系模式中存在的数据冗余和更新异常等问题
5、结论:满足BCNF的关系模式要比满足3NF的关系模式要好
三、关系模式的规范化
1、BC范式
(1)BC范式使得在函数依赖范畴中,实现了数据库中数据的彻底分离,也使BCNF被广泛用来衡
量关系数据库模式是否能满足一般应用的数据处理要求,范式从低到高对关系模式的约束逐渐加
强,所以范式之间是一种包含关系
(2)从低范式到高范式,不断消除着关系模式所带来的数据冗余、更新异常和数据不一致问题,
从而把一个不好的关系模式转换为好的关系模式
2、关系模式的规范化的定义
关系模式的规范化是指将一个低一级的关系模式分解为若干高一级关系模式的集合的这个过程
3、关系模式规范化需要解决的问题
(1) 用一组函数依赖充分表达应用语义所包含的关系模式属性间的约束关系
(2)范式的判定(关键是确定关系模式的候选键)
(3)关系模式的分解