一、关系模式的设计问题
关系数据库是以关系模型为基础的数据库。
一个关系既可以用来描述一个实体及其属性,也可以用来描述实体间的联系。
关系实质上就是一张二维表,表的行称为元组,列称为属性。
关系模式是用来定义关系的,表的结构,一个关系数据库包含一组关系
数据库的模式(数据库的结构):二维表结构体的集合。
关系数据库设计理论:数据依赖(包括函数依赖与多值依赖)、范式、模式设计方法。
关系模式的存储异常:
一个好的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应当尽可能的少。
二、函数依赖(FD)
1、函数依赖的定义:设有关系模式R(A1,A2,...An)或简记为R(U),X,Y是U的子集,r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。X→Y为模式R的一个函数依赖。(若在表中的第t1行,和第t2行上的X值相等,那么必有t1行和t2行上的Y值也相等,这就是说Y函数依赖于X)
设有函数依赖W→A,若存在X⊂W(真子集),有X→A成立,那么称W→A是局部依赖,否则就称W→A是完全函数依赖。
2、键和FD的关系
键:唯一标识实体的属性集
候选键:指可以唯一决定关系模式R中某元组值且不含有多余属性的属性集。
非主属性(非键属性):关系模式R中不包含在任何建中的属性。
主属性:包含在任何一个候选键中的属性,即所有候选键中都要有
关系:
设关系模式R(A1,A2...An),F是R上的函数依赖集,X是R的一个子集
(1)X→A1A2...An∈F+ (它的意思是X能够决定唯一的一个元组)
(2)不存在X的真子集Y,使得Y也能决定唯一的一个元组,则X就是R的一个候选键。(X能决定唯一的一个元组但又没有多余的属性集)
三、关系模式的范式
种类:
1NF>2NF>3NF>BCNF>4NF>5NF
规范化:模式分解,从低级->高级的操作(概念的单一化)
模式的彻底分解(函数依赖范围内):所有关系模式都属于BCNF
全码关系一定是BCNF
二元关系一定是4NF
若表中的属性全都不是非主属性,它一定是3NF,但不一定是BCNF
四、函数依赖(FD)的公理系统
1、函数依赖的逻辑蕴涵
设F是关系模式R的一个函数依赖集,X,Y是R的属性子集
F逻辑蕴涵X→Y:能从F中的函数依赖能够推出X→Y
函数依赖的闭包F+:被F逻辑蕴涵的函数依赖的全体构成的集合。
2、设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U中属性的函数依赖集
Armstrong公理系统:
进而推出:
习题:(解题过程见复习笔记)
1)有关系模式R(U,F),属性集合U ={A,B,C,D,E}, 函数依赖集合F = {A->BC, B->D, CD->E, E->B},请回答如下的问题:
(1) R的候选码是:
(2) R的主码是:
(3) R最高属于第几范式? 说明理由;
(4) R是否为第三范式 , 解释原因;
(5) 请分解R为符合第三范式的关系模式集合,并给出每个关系模式的主码。
2)设关系模式R(S#,C#,GRADE,TNAME,TADDR),其属性分别表示学生学号、选修课程的编号,成绩、任课教师地址等意义。如果规定,每个学生每学一门课只有一个成绩;每门课只有一个教师任教;每个教师只有一个地址(此处不允许教师同名同姓)。
(1)试写出关系模式R基本的函数依赖和候选键。
(2)试把R分解成2NF模式集并说明理由。
(3)试把R分解成3NF模式集,并说明理由。
3)假设关系模式R如下:R ( Sno,Sdept,Sloc,Cno,Grade ) 其中Sno为学号,Sdept为学生所在系,Sloc为学生的住处,Cno为学生所选修课程号,Grade为成绩。规定一个系有若干名学生,但一个学生只属于一个系;一个学生可以选修多门课,每门课有若干名学生选修;每个学生学习每门课只有一个成绩;每个系的学生住在同一个地方。
(1).写出关系模式R的基本函数依赖 ;确定R的码,并求解属性组(Sno,Cno)的闭包。
(2).分析关系模式R最高达到了几范式,为什么?如果R不属于2NF,请将R分解到2NF。
(3)进行分解,使其满足3NF。