180 likes | 380 Views
关系数æ®åº“ç†è®º. 关系代数. 关系数æ®åº“规范化ç†è®º. 关系数æ®åº“设计ç†è®º 是数æ®åº“设计的指å—,用æ¥è§£å†³å…³ç³»æ¨¡åž‹çš„优化问题。. 基础: 函数ä¾èµ–ç†è®ºå’Œè§„范化ç†è®ºã€‚. 例如: DEPT(deptno,dname,loc) 例如: u,v u.deptno=v.deptno u.dname=v.dname. 函数ä¾èµ–
E N D
关系数据库理论 • 关系代数 • 关系数据库规范化理论
关系数据库设计理论 • 是数据库设计的指南,用来解决关系模型的优化问题。 基础: 函数依赖理论和规范化理论。 例如: DEPT(deptno,dname,loc) 例如: u,v u.deptno=v.deptno u.dname=v.dname • 函数依赖 • 设R(A1, A2, …, An)为一关系模式,X、Y为属性全集U={A1, A2, …, An}的子集,从关系R中任取两个元组u、v,若有u·X=v·X(表示元组u在属性X上的值等于元组v在属性X上的值),则有u·Y=v·Y, 称X函数决定Y,或者称Y函数依赖于X。用符号: • X Y 表示。 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的候选码。包含在后选码的属性称为主属性,而不含在候选码中的属性称为非主属性。
. 求码? 根据码的定义, 由已知函数依赖,导出R(U,F)的全部函数依赖 • 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+的迭代算法,计算步骤如下: (1) 选X作为闭包X+的初值X(O) (2) 由X(i) 计算X(i+1)时,它是由X(i)并上其属性集合A所组成,其中A满足下列条件: y X(i)。且F中存在一函数依赖YZ,而AZ, 因为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)
SNOCLASS,CLASSSNO,CLASSDEPTNO 第三范式(3NF) 若关系模式R(U, F)为第一范式,不存在非主属性对码的传递依赖,则称R(U, F)为3NF。其中U为关系模式的属性全集,F为关系模式所满足的函数依赖集。 所谓传递依赖,是指当属性间存在下列函数依赖XY,YX,YA,则称A传递依赖于X。 STUDENT1 (SNO,SNAME,AGE,SEX,CLASS, DEPTNO,DEPTNAME): 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)
1NF 消除非主属性对码的部分函数依赖 2NF 消除非主属性对码的传递函数依赖 3NF 消除主属性对码的部分和传递函数依赖 BCNF