170 likes | 307 Views
数据库系统概论 An Introduction to Database System 第 6 章 关系数据理论. 第 6 章 关系数据理论. 6.1 问题的提出 6.2 规范化 6.3 数据依赖的公理系统 * 6.4 模式的分解. 6.3 数据依赖的公理系统. 函数依赖的推导公理( Armstrong 公理) 函数依赖与属性关系 闭包及其计算 函数依赖集的最小集 候选关键字的求解理论和算法. 五、候选关键字的求解理论和算法. 对于给定的关系 R ( A1 , A2 , … , An )和函数依赖集 F ,属性分为四类:
E N D
数据库系统概论 An Introduction to Database System 第6章 关系数据理论
第6章 关系数据理论 6.1 问题的提出 6.2 规范化 6.3 数据依赖的公理系统 *6.4 模式的分解
6.3 数据依赖的公理系统 • 函数依赖的推导公理(Armstrong公理) • 函数依赖与属性关系 • 闭包及其计算 • 函数依赖集的最小集 • 候选关键字的求解理论和算法
五、候选关键字的求解理论和算法 对于给定的关系R(A1,A2,…,An)和函数依赖集F,属性分为四类: L类:仅出现在F的函数依赖左部的属性 R类:仅出现在F的函数依赖右部的属性 N类:在F的函数依赖左右两边均未出现的属性 LR类:在F的函数依赖左右两边均出现的属性
1、快速求解候选关键字的一个充分条件 • 定理1 对于给定的关系模式R和函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选关键字的成员。 • 推论1 对于给定的关系模式R和函数依赖集F,若X(X∈R)是L类属性,且X+包含了R的全部属性,则X必为R的唯一候选关键字。
1、快速求解候选关键字的一个充分条件 [例] 设关系模式R(A,B,C,D),函数依赖集F={D→B,B→D,AD→B,AC→D} 求R的所有候选关键字。 解:考察F发现,A,C两属性是L类属性,由定理1可知,AC必是R的任一候选关键字的成员,又因为(AC)+=ACDB,由推论1可知,AC是R的唯一候选关键字。
1、快速求解候选关键字的一个充分条件 • 定理2对于给定的关系模式R和函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选关键字中。 • 定理3对于给定的关系模式R和函数依赖集F,若X(X∈R)是N类属性,则X必为R的任一候选关键字的成员。 • 推论2对于给定的关系模式R和函数依赖集F,若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性,则X必为R的唯一候选关键字。
1、快速求解候选关键字的一个充分条件 [例] 设关系模式R(A,B,C,D,E,P),函数依赖集F={A→D,E→D,D→B,BC→D,DC→A} 求R的所有候选关键字。 解:考察F发现,C,E两属性是L类属性,由定理1可知,CE必是R的任一候选关键字的成员,又P是N类属性,故由定理3可知,P也必是R的任一候选关键字的成员。又因为(CEP)+=CEPDAB,所以由推论2可知,CEP是R的唯一候选关键字。
2、左边为单属性的函数依赖集的候选关键字成员图论判定方法2、左边为单属性的函数依赖集的候选关键字成员图论判定方法 定义:函数依赖图G是一个有序二元组(R,F),记作 G=(R,F) 其中:(1)R=(A1,A2,…,An)是一个有限非空集, Ai (i=1,2,…,n)是G的结点,他们表示对应关系模式R=(A1,A2,…,An)的属性。 (2)F是G的边集,每条边表示一个函数依赖Ai→Aj,则F是R的单属性最小依赖集
A3 A1 A2 A5 A4 2、左边为单属性的函数依赖集的候选关键字成员图论判定方法 • 术语: • 引入线/引出线: • 原始点:只有引出线的结点(L类属性) • 终结点:只有引入线的结点(R类属性) • 途中点:既有引入线又有引出线的结点(LR类属性) • 孤立点:既无引入线又无引出线的结点(N类属性) • 关键点:原始点和孤立点统称为关键点 • 关键属性:关键点对应的属性 • 独立回路:不能被其他结点到达的回路
2、左边为单属性的函数依赖集的候选关键字成员图论判定方法2、左边为单属性的函数依赖集的候选关键字成员图论判定方法 • 定理4关系模式R的函数依赖图G中若存在关键结点,则关键结点对应的属性必在R的任何候选关键字中,而所有终结点必不在R的任何候选关键字中。 • 定理5属性集X是R的唯一候选关键字的充要条件是X为能到达G中任一结点的关键属性集。 • 推论3在单属性情况下,R具有唯一候选关键字的充要条件是G中不存在独立回路。 • 定理6设Y是途中点,则Y必在某个候选关键字中的充要条件是Y为某一个独立回路中的结点。
2、左边为单属性的函数依赖集的候选关键字成员图论判定方法2、左边为单属性的函数依赖集的候选关键字成员图论判定方法 定理7 设F是单属性依赖集,R的关键属性集X不能到达G中的某些结点,G中存在k(k≥1)个独立回路r1,r2,…,rk,各回路的结点集分别为: AA1={A11,A12,…,A1n1} AA2={A21,A22,…,A2n2} AAk={Ak1,Ak2,…,Aknn} 其中Aij (i=1,2,…,k;j=1,2,…,n)都是R的属性 则:(1)R的候选关键字必不唯一 (2)R的每个候选关键字均由两部分组成: • 关键属性集X(包括X为空) • k个独立回路中,每个独立回路任选一个点作为候选关键字的成员,候选关键字的集合Y是AA1,AA2,…,AAk的笛卡儿积。 (3)候选关键字的个数等于各独立回路中结点个数的乘积,即: M=n1×n2×…×nk (4) 每个候选关键字所含属性个数是一个常数,它等于关键属性个数|X|加上独立回路个数,即 N=|X|+k
算法:单属性依赖集图论求解法 输入:关系模式R,R的单属性依赖集F 输出:R的所有候选关键字 方法:(1)求F的最小依赖集F’。 (2)构造函数依赖图FDG。 (3)从图中找出关键属性集X(X可为空)。 (4)查看G中有无独立回路,若无则输出X,即为R的唯一候选关键字,转(6);若有则转(5)。 (5)从各回路中各取一结点对应的属性与X组合成一候选关键字,并重复这一过程取尽所有可能的组合,即为R的全部候选关键字。 (6)结束。
S D I B Q O 单属性依赖集图论求解法 例:设R=(O,B,I,S,Q,D) F={ S→D,D→S,I→B,B→I,B→O,O→B } 求R的所有候选关键字。 解:(1)F’=F={ S→D,D→S,I→B,B→I,B→O,O→B } (2)构造FDG (3)关键属性集{Q} (4)有两条独立回路,SDS,IBOBI 共有候选关键字M=2×3=6个 每个候选关键字有N=1+2=3个属性 (5)R的所有候选关键字为:QSI,QSB,QSD,QDI,QDB,QDO
3、多属性依赖集候选关键字求解法 输入:关系模式R及其函数依赖集F 输出:R的所有候选关键字 方法: (1)将R的所有属性分为L,R,N和LR四类,并令 X代表L,N两类属性,Y代表LR类属性。 (2)求X+,若X+包含了R的全部属性,则X即为R的唯一候选关键字,转(5);否则,转(3)。 (3)在Y中取一属性A,求(XA)+。若它包含了R的全部属性,则转(4);否则,调换一属性反复进行这一过程,直到试完所有Y中的属性。 (4)如果已找出所有候选关键字,则转(5);否则在Y中依次取两个,三个,…,求他们的属性闭包,直到其闭包包含R的全部属性。 (5)停止,输出结果。
3、多属性依赖集候选关键字求解法 例:R(X,Y,Z,W) F={ W→Y,Y→W,X→WY,Z→WY,XZ→W } 求R的所有候选关键字。 解:(1)考察F发现,X,Z属性为L类属性,Y,W为LR类属性 (2)所以,计算(XZ)+=XYZW 包含了R的全部属性,因此XZ为R的唯一候选关键字。
下课了。。。 下课了!