200 likes | 342 Views
关系数æ®åº“ç†è®º. 关系代数 关系数æ®åº“规范化ç†è®º. 关系数æ®åº“设计ç†è®º 关系数æ®åº“规范化ç†è®ºæ˜¯æ•°æ®åº“设计的指å—,用æ¥è§£å†³å…³ç³»æ¨¡åž‹çš„优化问题,其主è¦åŸºç¡€æ˜¯å‡½æ•°ä¾èµ–ç†è®ºå’Œè§„范化ç†è®ºã€‚ 函数ä¾èµ–
E N D
关系数据库理论 • 关系代数 • 关系数据库规范化理论
关系数据库设计理论 • 关系数据库规范化理论是数据库设计的指南,用来解决关系模型的优化问题,其主要基础是函数依赖理论和规范化理论。 • 函数依赖 • 设R(A1, A2, …, An)为一关系模式,X、Y为属性全集U={A1, A2, …, An}的子集,如果对于该关系模式的任一可能值(称关系)中的任何两个元组u、v,若有u·X=v·X(表示元组u在属性X上的值等于元组v在X属性上的值),即有u·Y=v·Y则称X函数决定Y,或者称Y函数依赖于X。用符号: • X Y • 表示。其中X称为决定因素。 • 例如: DEPT(deptno,dname,loc) • 例如: u,v u.deptno=v.deptno • u.dname=v.dname 01 Radio Bejing 01 Radio Bejing
Sno >Sname 完全函数依赖 在关系模式R(U)中,如果X Y成立,并且对X的任何真子集X, X不能函数决定Y(XY),则称Y对X是完全函数依赖,用符号表示。 在关系模式R(U)中,XY成立,如果X存在真子集X,而且XY成立,则称Y对X是部分函数依赖,用符号表示。 例如: SC (SNO, CNO, SCORE) SNO,CNO SCORE SC(SNO, CNO, SCORE, SNAME) SNO,CNO SCORE, SNO,CNO SNAME,
码的定义 在关系模式R(U)中,K为R的属性或属性组,若满足 ,则K为关系模式R的候选码。包含在后选码的属性称为主属性,而不含在候选码中的属性称为非主属性。 .
求码? 根据码的定义,由已知函数依赖,导出全部函数依赖 • Armstrong公理 • 设U为属性总体集,F为U上的 • 一组函数依赖,对于关系模式 • R(U,F)有下列推理规则: • A1: 自反律 • 若YXU,则X Y为F蕴含。 • A2:增广律 • 若XY为F所蕴含,且ZU,则X·ZY·Z为F所蕴含。 • A3:传递律 • 若XY,YZ为F所蕴含,则XZ为F所蕴含。
从上述Armstrong公理还可得出下面三条推理规则:从上述Armstrong公理还可得出下面三条推理规则: A4:合并规则 若XY、XZ成立,则XYZ也成立。 A5:伪传递规则 若XY和WYZ成立,则WXZ也成立。 A6:分解规则 如果XY和 ZY成立,则XZ也成立。 从合并规则和分解规则可得到一个重要的结论: 引理1: XA1·A2…An成立的充分必要条件是XAi成立,i=1, 2, … n
判断某属性(或属性组)能函数决定哪些属性 属性集团包定义 设F为属性集U上的一组函数依赖, X U, X+ ={A |X A能由F根据Armstrong公理理导出},称X+ 为属性集X关于函数依赖集F的闭包。 于是判断 XY能否由F根据Armstrong公理导出的问题,就转化为求X+..,即判断Y是否为X+..的子集的问题。
计算X+的迭代算法,计算步骤如下: · 选X作为闭包X+的初值X(O), 称为X(i) · X(i+1)是由X(i)并上其属性集合A所组成,其中A为F中存在的一函数依赖YZ,而AZ,y X(i)。因为U是有穷的,所以上述过程经过有限步后会达到X(i) =X(i+1),此时 X(i)为所求的 X+。 例如:F由下列函数依赖组成: ABC DEG CA BEC BCD CGBD ACDB CEAG 设X=BD, 求 X+。
计算步骤: · 设X(O)=BD ·计算X(1):在F中找其左边为B或D或BD的函数依赖,在F中有其函数依赖D EG。所以X(1)=BD EG=BDEG。 ·计算X(2):在F中找包含X(1)的函数依赖,除DEG外,还有BEC。所以X(2)=BDEG C=BCDEG。 ·计算X(3):在F中找包含X(2)的函数依赖,除去已使用过的函数依赖外,还有CA,BCD,和CEAG,则得X(3)=ABCDEG。由于X(3)由全部属性组成,显然X(3)=X(4)。因此得 (BD)+=ABCDEG
例2, 已知关系R<U,F>, U=(A,B,C,D,E) F=(ABC,BD,CE,ECB,ACB) 求R的码? 设R的码为AB, 先求(AB) + ab c c e bd acb ABABCD ABCDE X(O) X(1) X(2) 因为: (AB) +=ABCDE, 所以AB是关系的码 上述计算X+的算法可用于确定R(U, F)关系模式的码. 码必须满足两条件:它能函数决定全部属性;它必须是最小集
满足一定条件的关系模式 1NF,2NF,3NF是E.F.Codd在1 971年提出的,1974年Codd和Boyce共同提出BCNF范式,为第三范式的改进 规范化设计方法 一个低级范式的关系模式,通过分解(投影)的方法转换成多个高一级范式的关系模式的这种过程称为规范化设计。
每一属性对应的域为简单域,即其域值不可再分每一属性对应的域为简单域,即其域值不可再分 第一范式(1NF): 如果一关系模式,它的每一个分量是不可分的数据项,即其域为简单域,则此关系模式为第一范式。 例:将学生简历及选课等数据设计成一个关系模式: STUDENT (SNO,SNAME,AGE,SEX,CLASS,DEPTNO,DEPTNAME,CNO,CNAME,SCORE,CREDIT) 设该关系模式满足下列函数依赖: F={SNOSNAME, SNOAGE, SNOSEX, SNOCLASS, CLASSDEPTNO, DEPTNODEPTNAME, CNOCNAME, SNO.CNOSCORE, CNOCREDIT}
主码: SNO, CNO SNO S NAME 第二范式(2NF): 若关系模式R1NF,且每个非主属性完全函数依赖于码,则称R2NF。 例: STUDENT (SNO,SNAME,AGE,SEX,CLASS,DEPTNO,DEPTNAME,CNO,CNAME,SCORE,CREDIT)
关系是1NF不是2NF时存在的问题 学生学习多门课程后,其人事信息重复出现多次。 根据关系模型完整性规则,主码属性值不能取空值。新生刚入学,还未选修课程时,元组不能插入关系中。 学生退选了课程时,他们的一般信息会丢失 STUDENT (SNO,SNAME,AGE,SEX,CLASS,DEPTNO,DEPTNAME,CNO,CNAME,SCORE,CREDIT) · 数据冗余: · 插入,更新异常 · 删除异常,
分解关系模式 STUDENT (SNO,SNAME,AGE,SEX,CLASS,DEPTNO,DEPTNAME,CNO,CNAME,SCORE,CREDIT) CNO->CNAME CREDIT SNO,CNO->SCORE SNO->SNAME,AGE,SEX, CLASS, DEPTNO, DEPTNAME SC(SNO,CNO,SCORE) SC(SNO,CNO,SCORE) COURSE(CNO,CNAME,CREDIT) STUDENT1 (SNO,SNAME,AGE,SEX,CLASS, DEPTNO,DEPTNAME)
第三范式(3NF) 若关系模式R(U, F)为第一范式,不存在非主属性对码的传递依赖,则称R(U, F)为3NF。其中U为关系模式的属性全集,F为关系模式所满足的函数依赖集。 所谓传递依赖,是指当属性间存在下列函数依赖XY,YX,YA,则称A传递依赖于X。 STUDENT1 (SNO,SNAME,AGE,SEX,CLASS, DEPTNO,DEPTNAME): SNOCLASS,CLASSSNO,CLASSDEPTNO CLASS2(CLASS,DEPTNO) DEPARTMENT(DEPTNO,DEPTNAME)
关系模式STUDENT经过上述分解处理,分解成下列关系模式:关系模式STUDENT经过上述分解处理,分解成下列关系模式: STUDENT(SNO,SNAME,AGE,SEX,CLASS) CLASS2(CLASS,DEPTNO) DEPARTMENT(DEPTNO,DEPTNAME) COURSE(CNO,CNAME,CREDIT) SC(SNO,CNO,SCORE)
BCNF范式: • BCNF是修正的第三范式。 • 设关系模式R(U,F)1NF,若XY,而Y不包含在X中,那么X必含有码,则R(U, F)为BCNF。换句话说,每个决定因素都包含有码,则关系模式为BCNF。 • BCNF范式满足: • 所有非主属性对每一个码都是完全函数依赖 • 所有的主属性对每一个不包含它的码,也是完全函数依赖 • 没有任何属性完全函数依赖于非主码的任何一组属性
1NF 消除非主属性对码的部分函数依赖 2NF 消除非主属性对码的传递函数依赖 3NF 消除主属性对码的部分和传递函数依赖 BCNF
关系数据库设计理论习题 1. 已知关系模式R=(A,B,C,D,E,F,G),满足函数依赖集 F=AB, BC, AE, BF, D.CG, 关系模式R的码由哪些属性组成? R属于第几范式? 将R设计成3NF。 2. 为 ”课程开设管理” 设计关系数据库模式, 该模式需包含下列属性:CNO(课程号),CNAME(课程名),CREDIT(学分),TNO(教师号),TERM(学期),ROOM(教室),TIME(时间),SNO(学号),SCORE(学生选课成绩), 满足下列函数依赖: F=TIME.TERM.ROOMCNO, TIME.CNOTNO, SNO.CNOSCORE, CNOCNAME, CNOCREDIT将所有的关系模式设计成3NF。