数据库应用技术教程 课件 第13章 关系规范化与数据库设计_第1页
数据库应用技术教程 课件 第13章 关系规范化与数据库设计_第2页
数据库应用技术教程 课件 第13章 关系规范化与数据库设计_第3页
数据库应用技术教程 课件 第13章 关系规范化与数据库设计_第4页
数据库应用技术教程 课件 第13章 关系规范化与数据库设计_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关系数据规范化与数据库设计1本章目标01能够分析出关系模式中存在的异常。02能够给出关系中属性间的函数依赖集,并求出最小的函数依赖集。03根据最小函数依赖集求关系中的候选键。04根据根据规范化原则进行关系分解,得到较好的关系模式。05数据库设计的特点06数据库设计的方法与步骤本章内容13.1关系模式中可能存在的异常13.2函数依赖13.3候选键13.4关系模式的规范化13.5数据库设计的特点13.6数据库设计的方法与步骤2

关系students(sid,sname,dname,ddirector,cid,cname,cscore)

数据间存在的语义关系:

一个系有多名学生,而一个学生只属于一个系,即系与学生之间是的1:n的联系。

一个系只有一名系主任,一名系主任也只在一个系任职,即系与系主任之间是1:1的联系。

一名学生可以选修多门课程,而每门课程有多名学生选修,即学生与课程之间是m:n的联系。存在异常的关系模式示例13.1.1存在异常的关系模式示例SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构902001张小伟信息管理李少强1数据库原理922001张小伟信息管理李少强2电子商务752001张小伟信息管理李少强3数据结构861002钱海斌计算机罗刚1数据库原理901002钱海斌计算机罗刚3数据结构60students关系关系students主键(sid,cid)存在异常的关系模式示例13.1.1存在异常的关系模式示例SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构902001张小伟信息管理李少强1数据库原理922001张小伟信息管理李少强2电子商务752001张小伟信息管理李少强3数据结构861002钱海斌计算机罗刚1数据库原理901002钱海斌计算机罗刚3数据结构601.数据冗余指同一个数据被重复存储多次,导致存储空间的浪费。可能存在的异常13.1.2可能存在的异常SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构902001张小伟信息管理李少强1数据库原理922001张小伟信息管理李少强2电子商务752001张小伟信息管理李少强3数据结构861002钱海斌计算机罗刚1数据库原理901002钱海斌计算机罗刚3数据结构602.更新异常指对冗余数据没有全部修改而出现数据不一致的问题可能存在的异常13.1.2可能存在的异常SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构902001张小伟信息管理李少强1数据库原理922001张小伟信息管理李少强2电子商务753.插入异常指应该插入到关系中的数据而不能插入。新来的同学,在未选课的前提下,该同学的基本信息能插入到该关系中吗?不能。因为主键为(sid,cid),要求主键中每列值均不能为空。可能存在的异常13.1.2可能存在的异常SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构902001张小伟信息管理李少强1数据库原理922001张小伟信息管理李少强2电子商务754.删除异常指不应该删除的数据而被从关系中删除了。某个系学生全部毕业,删除该系的学生信息,同时也将系和系主任的信息一起删除掉了可能存在的异常13.1.2可能存在的异常数据依赖:关系模式中属性间存在的依赖关系。

例如一个系只有一名系主任,一名系主任也只能在一个系任职这个数据语义,表明系和系主任间是1:1的数据依赖关系异常现象产生的原因:关系模式中存在的这些复杂的数据依赖关系所导致的。解决:关系模式规范化,将单一的关系模式分解为数据依赖关系单纯化的多个关系模式。Student(Sno,Sname,Dname)Dept(Dname,Ddirector)Score(Sid,Cid,Cscore)Course(Cid,Cname)Students(Sid,Sname,Dname,Ddirector,Cid,Cname,Cscore)关系模式中存在异常的原因13.1.3关系模式中存在异常的原因本章内容13.1关系模式中可能存在的异常13.2函数依赖13.3候选键13.4关系模式的规范化13.5数据库设计的特点13.6数据库设计的方法与步骤10什么是函数依赖?函数依赖(FD)是数据库设计的核心部分。SidSnameSdept1001李红计算机1001李红计算机Sid→Sname

Sid→Sdept

SidSnameSdept1001李红计算机1001李红自动化

设R(U)是属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体的值与之对应,则称X函数决定Y,或Y函数依赖于X,记作X→Y。此表依赖关系是错误的

函数依赖定义13.2.1函数依赖定义函数依赖说明①函数依赖是语义范畴概念。SidSnameAge1001李红181002张丽17没有重名的前提下,Sname→AgeSidSnameAge1001李红181002张丽171003李红20允许重名,则Sname↛

Age②函数依赖关心的问题是一个或一组属性的值决定其它属性的值。函数依赖定义13.2.1函数依赖定义③函数依赖不是指关系模式R的某个或某些元组满足的约束条件,而是指R的所有元组均要满足的约束条件,不能部分满足。SidSnameSdeptCid1001李红计算机C11001李红计算机C21002张明自动化C11002张明自动化C21003赵海涛计算机C11003赵海涛自动化C2Sname→SdeptSname

SdeptSname

Sdept函数依赖定义13.2.1函数依赖定义1.根据完整的样本数据发现函数依赖存在的函数依赖:(Order_ID,SKU)→(Quantity,Price,Total)

(Quantity,Price)→TotalOrder_ID(订单编号)SKU(商品编号)Quantity(数量)Price(单价)Total(总价)30011002011300300200110110145020030011011012601202001101201250100300120100125010010011012012150300发现函数依赖13.2.2发现函数依赖2.根据数据语义发现函数依赖

对于关系模式R(U),X、Y为其属性子集,根据函数依赖的定义和实体间联系的类型,可以得出如下变换的方法:(1)如果X和Y之间是1:1的联系,则存在的函数X→Y和Y→X;(2)如果X和Y之间是1:n的联系,则存在的函数Y→X;(3)如果X和Y之间是m:n的联系,则X和Y之间不存在函数依赖关系。例如,在Students关系模式中,系与系主任之间是1:1的联系;系与学生之间是1:n的联系学生和课程之间是m:n的联系Dname→Ddirector和Ddirector→DnameSid→DnameSid与Cid之间不存在函数依赖发现函数依赖13.2.2发现函数依赖

【例13-1】设有关系模式R(A,B,C),其关系R如下所示。解答:(1)在关系r中,A→B成立,BC→A不成立,B→A不成立。(2)在关系r中,不成立的FD有:B→A,C→A,C→B,C→AB,BC→A。ABC123423533(1)试判断下列3个FD在关系r中是否成立?A→BBC→AB→A(2)根据关系r,你能断定哪些FD在关系模式R上不成立?发现函数依赖13.2.2发现函数依赖

【例13-2】有一个包括学生选课、教师任课数据的关系模式:R(S#,SNAME,AGE,SEX,C#,CNAME,SCORE,T#,TNAME,TITLE)规定:每个学号只能有一个学生,每个课程号只能决定一门课程;每个学生每学一门课,只能有一个成绩;每门课程只由一位教师任课。根据上面的规定和实际意义,写出该关系模式所有的FD。解答:R关系模式包括的FD有:S#→SNAME C#→CNAME(S#,C#)→GRADE C#→T#S#→(AGE,SEX) T#→(TNAME,TITLE)发现函数依赖13.2.2发现函数依赖1.函数依赖的推理规则A1(自反性):如果Y⊆X⊆U,则X→Y。A2(增广性):如果X→Y且Z⊆U,则XZ→YZ。A3(传递性):如果X→Y且Y→Z,则X→Z。B1(合并性):如果X→Y且X→Z,则X→YZ。B2(分解性):如果X→YZ,则X→Y、X→Z。B3(结合性):如果X→Y且W→Z,则XW→YZ。B4(伪传递性):如果X→Y且WY→Z,则XW→Z。Amstrong公理Amstrong公理推论最小函数依赖集13.2.3最小函数依赖集

【例13-3】设有关系模式R,属性集U={A,B,X,Y,Z},函数依赖集F={Z→A,B→X,AX→Y,ZB→Y},试给出ZB→Y是冗余的函数依赖的过程。解答:(1)因为Z→A,B→X,由B3可知,ZB→AX;(2)因为ZB→AX,AX→Y,由A3可知,ZB→Y。即ZB→Y可以由F中其它函数依赖导出,所以ZB→Y是冗余的函数依赖。最小函数依赖集13.2.3最小函数依赖集2.求最小函数依赖集如果函数依赖集F满足下列条件,则称F为一个最小函数依赖集。每个函数依赖的右边都是单属性(可以通过B2分解性实现:如果X→YZ,则X→Y、X→Z。);函数依赖集F中没有冗余的函数依赖;F中每个函数依赖的左边没有多余的属性。注意:每个函数依赖集至少存在一个最小依赖集,但并不一定唯一。最小函数依赖集13.2.3最小函数依赖集【例13-4】设F是关系模式R(A,B,C)的FD集,

F={A→BC,B→C,A→B,AB→C},试求最小函数依赖集。解:(1)先把F中的函数依赖写成右边是单属性形式:

F={A→B,A→C,B→C,A→B,AB→C}删去一个A→B,得:F={A→B,A→C,B→C,AB→C}最小函数依赖集13.2.3最小函数依赖集(2)删去冗余的函数依赖。

F={A→B,B→C,AB→C}(3)消除函数依赖左边冗余的属性。

最小函数依赖集为:F={A→B,B→C}【例13-5】设关系模式R(A,B,C,D,E,G,H)上的函数依赖集F={AC→BEGH,A→B,C→DEH,E→H},求F的最小函数依赖集。解:(1)把每个FD的右边拆成单属性,得到9个FD,得:F={AC→B,AC→E,AC→G,AC→H,A→B,C→D,C→E,C→H,E→H}(2)消除冗余的FD,得:F={AC→B,AC→E,AC→G,AC→H,A→B,C→D,C→E,E→H}最小函数依赖集13.2.3最小函数依赖集(3)消除FD中左边冗余的属性。因为A→B,所以消去AC→B中的C;因为C→E,所以消去AC→E的A;因为由C→E、E→H,可推出C→H,所以消去AC→H中的A,得C→H,因为可由C→E、E→H推出,所以将AC→H删去,得到的F为:F={A→B,C→E,AC→G,C→D,E→H}(4)再把左边相同的FD合并起来,得到最小的函数依赖集为:F={A→B,C→DE,AC→G,E→H}最小函数依赖集13.2.3最小函数依赖集本章内容13.1关系模式中可能存在的异常13.2函数依赖13.3候选键13.4关系模式的规范化13.5数据库设计的特点13.6数据库设计的方法与步骤24定义13.2

设关系模式R(U),k⊆U。如果k满足下列条件,则称k是R的一个候选键。

k→U;不存在k的真子集z,使得z→U。例如:关系模式students(sid,sname,dname,ddirector,cid,cname,csore)∵

(sid,cid)→(sid,sname,dname,ddirector,cid,cname,csore)∴候选键:(sid,cid)

sid

(cid,cname,score)

cid

(sid,sname,dname,ddirector,cscore)如何确定属性集k→U?求属性集k的闭包如果k+=U,则k为候选键候选键定义13.3.1候选键定义定义13.3

设F是属性集U上的函数依赖集,X是U的子集,那么属性集X的闭包用X+表示,它是一个从F集使用函数依赖推理规则推出的所有满足X→A的属性A的集合:

X+={属性A|X→A能由F推导出来}定理13.1

X→Y能由F根据函数依赖推理规则推出的充分必要条件是Y⊆X+。属性集的闭包13.3.2属性集的闭包算法13.1

求属性集X(X⊆U)关于U上的函数依赖集F的闭包X+。输入:函数依赖集F;属性集U输出:X+步骤:(1)令X(i)=X,i=0;(2)求b,这里b={A|(

V)(

W)(V→W∈F∧V⊆X(i)∧A∈W)};(3)X(i+1)=b∪X(i)

;(4)判断X(i+1)=X(i)是否成立;(5)如果等式成立或X(i+1)=U,则X(i+1)

就是X+,算法终止;(6)如果等式不成立,则i=i+1,返回步骤(2)继续。属性集的闭包13.3.2属性集的闭包【例13-6】已知关系模式R(U,F),其中U={A,B,C,D,E};

F={AB→C,B→D,C→E,EC→B,AC→B}。求(AB)+。解答:(1)令X(0)=XX(0)=AB(2)求b。逐一扫描F集中各个函数依赖,找左部为A、B或AB的函数依赖,b=函数依赖右端属性集合。b=CD(3)X(1)=b∪X(0)

X(1)=CD∪AB=ABCD(4)因为X(1)≠X(0),所以再找左部为ABCD子集的函数依赖X(2)=b∪X(1)=BE∪ABCD=ABCDEb=BE(5)因为X(2)=U,所以(AB)+=ABCDE。属性集的闭包13.3.2属性集的闭包【例13-7】设关系模式R(A,B,C,D,E,G)上函数依赖集为F,F={D→G,C→A,CD→E,A→B}。求D+,CD+,AD+,AC+,ACD+。解答:D+=DG,CD+=ABCDEG,AD+=ABDG,AC+=ABC,ACD+=ABCDEG。属性集的闭包13.3.2属性集的闭包【例13-8】设有关系模式R(A,B,C,D,E,G),函数依赖集F={AB→E,AC→G,AD→B,B→C,C→D},求出R的所有候选键。步骤一:查看函数依赖集F中的每个形如Xi→Yi(i=1,…,n)的函数依赖关系。看哪些属性在所有Yi(i=1,…,n)中一次也没有出现过,设没有出现过的属性集为P(P=U-Y1-Y2-…Yn)。P={A}步骤二:P≠

时,根据候选键的定义,候选键中应必包含P(因为没有其它属性能决定P,但自己能决定自己)。考察P,如果P满足候选键定义,则P为候选键,并且候选键只有P一个,结束。(A)+=AA不是候选键求候选键13.3.3求候选键设有关系模式R(A,B,C,D,E,G),函数依赖集F={AB→E,AC→G,AD→B,B→C,C→D},求出R的所有候选键。步骤三:如果P不满足候选键定义,则P可以分别与{U-P}中的每一个属性合并,形成P1、P2、…、Pm。再分别判断Pj(j=1,…,m)是否满足候选键定义,能成立则找到了一个候选键,没有则放弃。合并一个属性如果不能找到或不能找全候选键,可进一步考虑P与{U-P}中的2个(或3个,4个,…)属性的所有组合分别进行合并,继续判断分别合并后的各属性组是否满足候选键的定义,如此下去,直到找出R的所有候选键为止。结束。注意:如果属性组K已有K→U,则不需要再去考察含K的其它属性组合,显然它们都不可能再是候选键了。

P中A分别与{U-P}中的(B,C,D,E,G)合并,形成AB、AC、AD、AE、AG。下面分别求(AB)+、(AC)+、(AD)+、(AE)+、(AG)+。(AB)+=ABCDEG,(AC)+=ABCDEG,

(AD)+=ABCDEG,(AE)+=AE,(AG)+=AG候选键为AB、AC、AD【例13-9】设有关系模式R(A,B,C,D,E)上的函数依赖集为F,并且F={A→BC,CD→E,B→D,E→A},求出R的所有候选键。步骤一:查看函数依赖集F中的每个形如Xi→Yi(i=1,…,n)的函数依赖关系。看哪些属性在所有Yi(i=1,…,n)中一次也没有出现过,设没有出现过的属性集为P(P=U-Y1-Y2-…Yn)。P=

步骤二:P=

时,则可以先考察Xi→Yi(i=1,…,n)中的单个Xi,判断Xi是否满足候选键定义。如果成立则Xi为候选键。剩下不是候选键的,可以考察它们两个或多个的组合,查看这些组合是否满足候选键定义,从而找出其它可能还有的候选键。结束。(A)+=ABCDE,(CD)+=ABCDE,

(B)+=BD,

(E)+=ABCDE,

B与C、D分别组合,不要与A、E组合,因为A、E已为候选键。

(BC)+=ABCDE,(BD)+=BD

候选键为:A、CD、E、BC本次内容13.1关系模式中可能存在的异常13.2函数依赖13.3候选键13.4关系模式的规范化13.5数据库设计的特点13.6数据库设计的方法与步骤33SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构902001张小伟信息管理李少强1数据库原理922001张小伟信息管理李少强2电子商务751002钱海斌计算机罗刚1数据库原理901002钱海斌计算机罗刚3数据结构60下面的关系模式好不好?不好数据冗余更新异常插入异常删除异常关系模式的好与坏,用什么标准来衡量呢?这个标准就是关系模式的范式。将坏的关系模式转换成好的关系模式,则需要对范式进行规范化为什么?范式(NormalForm,NF)是指关系模式的规范形式。各范式间的联系为:

1NF2NF3NFBCNF范式级别与异常问题的关系是:级别越低,出现异常的现象越高级别:高低范式及规范化13.4.1范式及规范化1.范式

2.规范化①将一个给定的关系模式转化为某种范式的过程,称为关系模式的规范化过程,简称为规范化。②规范化一般采用分解的办法,将低级别范式向高级别范式转化,使关系的语义单纯化。③规范化程度,不一定越高越好,在关系模式设计时,一般要求关系模式达到3NF或BCNF即可。范式及规范化13.4.1范式及规范化

定义13.4

设R是一个具有属性集合U的关系模式,X和Y是U的子集。如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖于X,记作

X→Y;如果X→Y,并且对于X的任何一个真子集Z,Z→Y都成立,则称Y部分函数依赖于X,记作

X→Y。fp1.完全函数依赖和部分函数依赖完全函数依赖、部分函数依赖和传递函数依赖13.4.2完全函数依赖、部分函数依赖和传递函数依赖①(Sid,Cid)→Cscore②(Sid,Cid)→Dnamefp【例13-10】对于关系模式students(sid,sname,dname,ddirector,cid,cname,cscore),判断下面所给的两个函数依赖是完全函数依赖还是部分函数依赖,为什么?①(sid,cid)→cscore②(sid,cid)→dname。【说明】只有当决定因素(函数依赖左侧)是组合属性时,讨论部分函数依赖才有意义,当决定因素是单属性时,都是完全函数依赖。完全函数依赖、部分函数依赖和传递函数依赖13.4.2完全函数依赖、部分函数依赖和传递函数依赖定义13.5

设R是一个具有属性集合U的关系模式,X、Y、Z是U的子集,且X、Y、Z是不同的属性集。如果X→Y,Y→X不成立,Y→Z,则称Z传递函数依赖于X,记作X→Z。t2.传递函数依赖完全函数依赖、部分函数依赖和传递函数依赖13.4.2完全函数依赖、部分函数依赖和传递函数依赖【例13-11】对于关系模式students(sid,sname,dname,ddirector,cid,cname,cscore)①存在Sid→Dname,Dname↛Sid不成立,而Dname→Ddirector,

Sid→Ddirector。t【说明】(1)如果X→Y,且Y→X,则称X与Y等价,记作X↔Y。(2)如果定义中X↔Y,称Z对X直接函数依赖,而不是传递函数。②在学生不存在重名的情况下,Sid↔Sname,而Sname→Dname,

Sid→Dname是直接函数依赖,不是传递函数依赖。完全函数依赖、部分函数依赖和传递函数依赖13.4.2完全函数依赖、部分函数依赖和传递函数依赖1.第一范式(1NF)定义13.6

设R是一个关系模式。如果R中每个属性的值域,都是不可分的原子值,则称R是第一范式,记作1NF。1NF是关系模式具备的最起码的条件。以函数依赖为基础的范式13.4.3以函数依赖为基础的范式存在:数据冗余、插入异常、删除异常、更新异常。SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构902001张小伟信息管理李少强1数据库原理922001张小伟信息管理李少强2电子商务75示例StudentsStudents关系模式满足1NF?是1NFStudents存在异常?以函数依赖为基础的范式13.4.3以函数依赖为基础的范式2.第二范式(2NF)主属性——候选键中所有的属性均称为主属性;非主属性——不包含在任何候选键中的属性。示例SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构90Students假设Students不允许重名,候选键?(sid,cid)(sname,cid)Students主属性?sidsnamecidStudents非主属性?DnameDdirectiorCnameCscore以函数依赖为基础的范式13.4.3以函数依赖为基础的范式定义13.7

如果关系模式R是1NF,而且R中所有非主属性都完全函数依赖于任意一个候选键,则称R是第二范式,记作2NF。2NF的实质是不存在非主属性“部分函数依赖”于候选键的情况。以函数依赖为基础的范式13.4.3以函数依赖为基础的范式SidSnameDnameDdirectorCidCnameCscore1001李红计算机罗刚1数据库原理861001李红计算机罗刚3数据结构90示例Students为1NF,但存在数据冗余、插入异常、删除异常和更新异常。Students满足2NF?StudentsStudents上的函数依赖有:{Sid→Sname,

Sid→Dname,Dname↔Ddirector,Cid→Cname,

(Sid,Cid)→Cscore,(Sid,Cid)→Sname,(Sid,Cid)→Dname,

(Sid,Cid)→Ddirector,(Sid,Cid)→Cname}fpppp存在部分函数依赖,不满足2NF以函数依赖为基础的范式13.4.3以函数依赖为基础的范式1NF关系向2NF的转换原则设关系模式R属性集合为U,主键是W,R上还存在函数依赖X→Z,且X是W的子集,Z是非主属性,那么W→Z就是一个部分函数依赖。此时应把R分解成两个关系模式:R1(XZ),主键是X;R2(Y),其中Y=U-Z,主键仍是W,外键是X(sid,cid)sid->snamesid->dnamesid->ddirectorcid->cname将导致部分函数依赖的属性放入R1{Sid→Sname,

Sid→Dname,Dname↔Ddirector,Cid→Cname,

(Sid,Cid)→Cscore,(Sid,Cid)→Sname,(Sid,Cid)→Dname,

(Sid,Cid)→Ddirector,(Sid,Cid)→Cname}fpppp示例R11(Sid,Sname,Dname,Ddirector)PK为Sid{Sid→Sname,Sid→Dname,Dname↔Ddirector}R12(Cid,Cname)PK为Cid{Cid→Cname}R2(Sid,Cid,Cscore){(Sid,Cid)→Cscore}

PK为(Sid,Cid)f以函数依赖为基础的范式R11(Sid,Sname,Dname,Ddirector)PK为Sid{Sid→Sname,Sid→Dname,Dname↔Ddirector}R12(Cid,Cname)PK为Cid{Cid→Cname}R2(Sid,Cid){Cid→Cname}

PK为(Sid,Cid)f分解后的3个关系模式好坏?SidSnameDnameDdirector1001李红计算机罗刚1003孙海英计算机罗刚CidCname1数据库原理3数据结构SidCidCscore10011861001390满足2NF,存在数据冗余、删除异常、插入异常、更新异常满足2NF,不存在问题满足2NF,不存在问题Sid→Ddirectort以函数依赖为基础的范式3.第三范式(3NF)定义13.8

如果关系模式R是2NF,而且R中所有非主属性对任何候选键都不存在传递函数依赖,则称R是第三范式,记作3NF。3NF是从1NF消除非主属性对候选键的部分函数依赖,和从2NF消除传递函数依赖而得到的关系模式。以函数依赖为基础的范式13.4.3以函数依赖为基础的范式2NF关系向3NF的转换原则

设关系模式R属性集合为U,主键是W,R上还存在函数依赖X→Z,并且Z是非主属性,Z不包含于X,X不是候选键,这样W→Z就是一个传递依赖。此时应把R分解成两个关系模式:R1(XZ),主键是X;R2(Y),其中Y=U-Z,主键仍是W,外键是X。(sid)dname->ddirector将导致传递函数依赖的属性放入R1R(Sid,Sname,Dname,Ddirector)PK为Sid{Sid→Sname,Sid→Dname,Dname↔Ddirector,Sid→Ddirector}t示例R1(Dname,Ddirector)PK为Dname{Dname↔Ddirector}R2(Sid,Sname,Dname)PK为SidFK为Dname

{Sid→Sname,Sid→Dname}以函数依赖为基础的范式SidCidGradeTname11001190Mary11001387Rose21001185Jone11002192Mary11002387Rose示例STC属于3NF?

STC3NF。因为非主属性grade对候选键完全函数依赖。sid与cid关系为m:ncid与tname关系为1:n函数依赖集:{(Sid,Cid)→Grade,(Sid,Tname)→Grade,Tname→Cid}候选键:(Sid,Cid)和(Sid,Tname)但依然存在:数据冗余、插入异常、删除异常、更新异常。以函数依赖为基础的范式13.4.3以函数依赖为基础的范式4.Boycc-Codd范式(BCNF)定义13.9

如果关系模式R是1NF,且对于R中每个函数依赖X→Y,X必为候选键,则称R是BCNF范式。

由BCNF的定义可以知,每个BCNF范式应具有以下3个性质:(1)所有非主属性都完全函数依赖于每个候选键;(2)所有主属性都完全函数依赖于每个不包含它的候选键;(3)没有任何属性完全函数依赖于非键的任何一组属性。3NF关系向BCNF转换的原则是消除主属性对候选键的部分和传递函数依赖,将3NF关系分解成多个BCNF关系模式。以函数依赖为基础的范式13.4.3以函数依赖为基础的范式SidCidGradeTname11001190Mary11001387Rose21001185Jone11002192Mary11002387Rose示例1

STC函数依赖集:{(Sid,Cid)→Grade,(Sid,Tname)→Grade,Tname→Cid}候选键:(Sid,Cid)和(Sid,Tname)(Sid,Tname)→Cidp分解:

R1(Tname,Cid){Tname→Cid}PK为TnameFK为Cid

R2(Sid,Cid,Grade){(Sid,Cid)→Grade}PK为(Sid,Cid)以函数依赖为基础的范式13.4.3以函数依赖为基础的范式示例2关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。由语义可得到函数依赖:(S,J)→T;(S,T)→J;T→J

因为没有任何非主属性对码传递依赖或部分依赖,STJ∈3NF。因为T是决定因素,而T不包含码,所以STJ∈BCNF。以函数依赖为基础的范式53非BCNF的关系模式也可以通过分解成为BCNF。例如STJ可分解为ST(S,T)与TJ(T,J),它们都是BCNF。3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度。一个模式中的关系模式如果都属于BCNF,那么在函数依赖范畴内,它已实现了彻底的分离,已消除了插入和删除的异常。3NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖。以函数依赖为基础的范式54关系模式规范化的基本步骤:关系模式规范化总结13.4.5关系模式规范化总结本章内容13.1关系模式中可能存在的异常13.2函数依赖13.3候选键13.4关系模式的规范化13.5数据库设计的特点13.6数据库设计的方法与步骤56数据库设计的特点(1)综合性

涉及面广,需包含计算机专业知识及业务系统专业知识;要解决技术及非技术两方面的问题;(2)结构设计与行为设计是分离的

结构设计是指数据库的模式结构设计,包括概念结构、逻辑结构和存储结构;行为设计是指应用程序设计,包括功能组织、流程控制等方面的设计。数据库设计的特点数据库设计与传统的软件工程的做法正好相反。数据库设计的主要精力首先是放在数据结构的设计上,比如数据库的表结构、视图等。本章内容13.1关系模式中可能存在的异常13.2函数依赖13.3候选键13.4关系模式的规范化13.5数据库设计的特点13.6数据库设计的方法与步骤59数据库设计方法概述为了使数据库设计更合理更有效,需要有效的指导原则,这种原则就称为数据库设计方法。新奥尔良(NewOrleans)方法将数据库设计分为四个阶段:需求分析、概念结构设计、逻辑结构设计和物理结构设计

需求说明需求分析概念结构概念结构设计逻辑结构逻辑结构设计物理结构结构物理设计数据库设计方法从本质上看仍然是手工设计方法,其基本思想是过程迭代和逐步求精。数据库设计的基本步骤

需求分析结构设计行为设计数据库实施数据库运行和维护数据库设计全过程运行和维护需求分析数据分析功能分析概念结构设计逻辑结构设计物理结构设计加载数据功能设计事务设计程序设计调试运行合理确定实体和属性一般是描述中的名词;能作为属性对待的,尽量作为属性;区分实体和属性的两条准则:(1)属性不能再具有需要描述的性质。即属性必须是不可分的数据项,不能再由另一些属性组成(2)属性不能与其他实体具有联系。联系只发生在实体之间例13-12:职工是一个实体,职工号、姓名、年龄是职工的属性,考虑“职称”,是作为属性,还是实体?如果职称与工资、福利挂钩,即职称有需要进一步描述的特性,则根据准则(1),职称作为一个实体看待更恰当。如果职称与工资、福利挂钩,即职称有需要进一步描述的特性,则根据准则(1),职称作为一个实体看待更恰当。职称作为一个实体例13-13:在医院中,一个病人只能住在一个病房中,考虑“病房号”的设计;如果一个病人只能住在一个病房中,考虑“病房号”的设计;如果,一个医生负责几个病房的病人的医疗工作,即,病房还要与医生实体发生联系,则根据准则(2),“病房号”应作为一个实体病房作为一个实体如果,一个医生负责几个病房的病人的医疗工作,即,病房还要与医生实体发生联系,则根据准则(2),“病房号”应作为一个实体设计全局E-R模型

将局部E-R图集成为全局E-R图;需消除各分E-R图合并时产生的冲突;解决冲突是合并E-R图的主要工作和关键所在。冲突主要有三类:属性冲突命名冲突结构冲突优化全局E-R模型

实体个数尽可能少;实体所包含的属性尽可能少;实体间联系无冗余。逻辑结构设计

把概念结构设计阶段设计好的基本E-R模型转换为具体的数据库管理系统支持的数据模型,也就是导出特定的DBMS可以处理的数据库逻

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论