当前位置:文档之家› 数据库重难点(无损连接和范式)

数据库重难点(无损连接和范式)

模式分解的几个重要事实:
若只要求分解具有“无损连接性”,一定可以达到4NF;
若要求分解要“保持函数依赖”,可以达到3NF,但不一定能达到BCNF;
若要求分解既要“保持函数依赖”,又要具有“无损连接性”,可以达到3NF,但不一定能达到BCNF;
试分析下列分解是否具有无损联接和保持函数依赖的特点:
设R(ABC),F1={A→B} 在R上成立,ρ1={AB,AC}。

首先,检查是否具有无损联接特点:
第1种解法--算法4.2:
A B C AB a1 a2 b13 AC a1 b22 a3 A B C a1 a2 b13 a1 a2 a3
(1) 构造表(2)根据A→B进行处理
结果第二行全是a行,因此分解是无损联接分解。

第2种解法:(定理4.8)
R1(AB)∩R2(AC)=A
R2- R1=B
∵A→B,∴该分解是无损联接分解。

然后,检查分解是否保持函数依赖
πR1(F1)={A→B,以及按自反率推出的一些函数依赖}
πR2(F1)={按自反率推出的一些函数依赖}
F1被πR1(F1)所蕴涵,∴所以该分解保持函数依赖。

范式
当查询涉及到针对“否定”特征含义的查询要求,如“不”、“没有”等字眼,一般要用差运算表示。

针对“全部”特征含义的查询要求,如“全部”、“至少”、“包含”等字眼,一般要用除法运算。

?
1NF :R(A,B,C,D)依赖集(ab>c a->d) 因为d部分依赖于ab 所以属于1NF 不属于2NF 2NF :R(A,B,C,D)依赖集(ab>c c—>d) 因为d传递依赖与AB 但是不存在部分依赖所以属于2N 不属3NF
3NF : R(A,B,C,D)依赖集(ab>c ab—>d,d->a) 因为即不存在部分依赖也不存在传递依赖所以属于3NF 但是因为d->a因为d是非主属性所以不属于BCNF
1、第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。

2、第二范式(2NF):关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码。

3、第三范式(3NF):关系模式R属于第一范式,且每个非主属性都不传递递依赖于键码。

4、BC范式(BCNF):关系模式R属于第一范式,且每个属性都不传递依赖于键码。

**码的快速求解:
1、【L类、N类至少有一种】
根据定理,L、N类必为侯选码之一,如果L+包含全部R,则L为唯一侯选。

R类不在任何侯选码中。

L+N类且(L+N)+包含所有R,则L+N为唯一侯选。

2、【只有LR类】
将F右部单一化后,取左边出现频率最多的属性X,求X+,若包含R中所有属
性,则X为侯选码。

找能决定X的属性Y,求Y+。

单个完后找两两结合,依次类推。

(侯选码不参与结合)?
eg:
如设有关系模式R(A,B,C,D,E),其上的函数依赖集F={A→BC,CD→E,B→D,E→A},求出R的所有候选码。

?根据上述方法,具体求解步骤如下:把F右部单一化后F={?A→B,A→C,CD→E,B→D,E→A?};根据判断,A作为确定因素在左部出现的频率最高,求A+=ABCDE,又有E→A,求E+=ABCDE而CD→E,求(CD)+=ABCDE,可以得出属性A,E,CD为候选码;除去A,E,CD 外,根据一般求解法求两个属性组合的闭包,可以得到(BC)+=ABCDE,最后可以算出R的候选码为:A,E,CD,BC。

相关主题