数据库课件第6章.ppt
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * 6.4.5 BCNF范式 举例: SCG(Sno,Sname,Cno,G)属于3NF,继续把它分解为: SS=SCG[Sno,Sname] SG=SCG[Sno,Cno,G] 可用SS,SG代替原模式SCG 规范化后,SS,SG都属于BCNF,并且大大减少了冗余 * 小结 目的: 规范化的目的是使结构合理,使数据冗余尽量小,清除插入,删除和更新异常. 原则: 遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系.规范化的实质就是概念单一化.(一个关系表示一个实体) 方法: 将关系模式投影分解成两个或两个以上的关系模式. 要求: 分解后的关系模式集合应当与原关系模式“等价”,既具有无损连接性,又保持函数依赖特性”. 一个关系模式达到BCNF,说明在函数依赖的范畴内,已实现了彻底分离,可消除“异常”,但在实际应用中,并不一定要求全部模式都达到BCNF. * 思考题 1. 设学校环境如下: 一个系有若干个专业,每一个专业只属于一个系。每个专业一年只招一个班,每个班有若干名学生.一个系的学生住在同一个宿舍区,每个学生可以参加几个学会,一个学会有若干学生.现在要建立关于系、学生、班级、学会的数据库,关系模式为: 班(班号,专业名,系名,班人数,入学年份) 学生(学号,姓名,出生日期,系名,班号,宿舍区) 系(系号,系名,办公室,系人数) 学会(学会名,成立时间,地点,会员数) 学生参加各学会要注明入会年份 * 思考题 (1)请写出每个关系模式的函数依赖,分析是否存在部分依赖,是否存在传递依赖 (2) 找出各个关系的候选码 (3)对该关系模式进行规范化,并使规范化后的数据模型属于3NF关系模式 * 分析 班(班号,专业名,系名,班人数,入学年份)候选码:班号、(专业名,入学年份) 班号 系名 班号 班人数 (专业名,入学年份) 班号 (专业名,入学年份) 班人数 专业名 系名 (专业名,入学年份) 系名 f f f f f p * 分析 学生(学号,姓名,出生日期,系名,班号,宿舍区)候选码:学号 学号 姓名 学号 出生日期 学号 系名 学号 班号 学号 宿舍区 班号 系名 系名 宿舍区 班号 宿舍区 学号 系名 学号 宿舍区 f f f f f f f t t t * 分析 系(系号,系名,办公室,系人数) 系号 系名 系号 办公室 系号 系人数 系名 办公室 系名 系人数 学会(学会名,成立时间,地点,会员数) 学会名 成立时间 学会名 地点 学会名 会员数 参会(学会名,学号,参会时间) (学会名,学号) 学会名 (学会名,学号) 学号 (学会名,学号) 参会时间 f f f f f f f f f f f * 3NF规范要点 首先R属于2NF,再判断是否存在传递函数依赖。 R(X,Y,Z,W),若X Y,Y X,且 Y Z适合于R,那么R首先分解为投影R[X,Y,W]和R[Y,Z],若R[X,Y,W]还不属于3NF,则继续上述过程。 2NF是在1NF的基础上,消除非主属性对候选码的部分函数依赖 * 需要规范的关系模式 班(班号,专业名,系名,班人数,入学年份) (专业名,入学年份) 系名 专业(专业名,系名) √ 班(班号,班人数,专业名,入学年份) √ 学生(学号,姓名,出生日期,系名,班号,宿舍区) 学号 系名(班号) 学号 宿舍区(班号) 班号 宿舍区(系名) 班(班号,系名)× 班(班号,宿舍区)× 系(系名,宿舍区)√ 学生(学号,姓名,出生日期,班号 ) √ p t t t * 分析 班(班号,专业名,入学年份,班人数) 专业(专业名,系名)
显示全部