函数依赖
1.函数依赖定义
A-> B,即 “ A函数决定B ” ,A称为决定因素。
2.关系的键码、超键码
属性函数决定关系R的所有其它属性,并且该属性的任何真子集都不能函数决定R的所有其它属性,则属性是键码。 键码必须是最小的。
包含键码的属性集称为 “ 超键码 ” 。每个键码都是超键码。
例题: 已知关系R包含属性{A,B,C,D},R的键码为{A,B},则下面的选项哪1个是R
的超键码( )。
A.{A} B.{C,D} C.{A,B,C,D} D.{B,C,D}
答案:C
3.几个概念
平凡依赖:如果B是A的子集,则称该依赖为平凡的。
非平凡依赖:如果B中至少有一个属性不在A中,则称该依赖为非平凡的。
完全非平凡依赖:如果B中没有一个属性在A中,则称该依赖为完全非平凡的。
平凡依赖规则:函数依赖A1A2 … An → B1B2 … Bm等价于A1A2 … An → C1C2 … Ck,其中 C是B的子集,但不在A中出现。称这个规则为 “ 平凡依赖规则 ” 。
4.传递规则
如果A1A2 … An → B1B2 … Bm和B1B2 … Bm → C1C2 … Ck,在关系R中成立,则A1A2 … An → C1C2 … Ck在R中也成立。这个规则就称为传递规则。
例题: 现给定一个关系R的实例如下表,则可能是函数依赖的是( B ).
Fl |
F2 |
R |
F。 |
F5 |
李华 |
20020330 |
H |
1 |
lO |
金谦 |
20020330 |
0 |
1 |
5 |
李华 |
20020218 |
O · |
3 |
15 |
吕宋 |
200201]5 |
H |
2 |
5 |
顾小华 |
20020218 |
O |
1 |
20 |
A.F1 →F2 B.F1F2→F5
C.F3 F4→F5 D.F2F3→F4
学习要点二
1. 函数依赖集:假设{A1,A2, … ,An}是属性集,记为A,S是函数依赖集。
属性集A在依赖集S下的封闭集是这样的属性集X,它使得满足依赖集S中的所有依赖的每个关系也都满足A→ X。
A1A2 … An → X是蕴含于S中的函数依赖。
2.封闭集:
对于给定的函数依赖集S,属性集A函数决定的属性的集合就是属性集A在依赖集S下的封闭集。
学会计算某属性集的封闭集,可以根据给定的函数依赖集推导蕴含于该依赖集的其他函数依赖。
例题: 假设关系模式为R(A,B,C,D),函数依赖为A→B,B→C和B→D。
(1)求蕴含于给定函数依赖的所有非平凡函数依赖;
(2)求R的所有键码;
(3)求R的所有超码(不包括键码)。
参考答案:
(1)先求各种属性组合的封闭集,再从中找出新的函数依赖。
A+=ABCD B+=BCD C+=C D+=D
A→C,A→D (2)
AB+==ABCD AC+==ABCD AD+=ABCD BC+=BCD BD+=BCD
CD+=CD
AB→C,AB→D AC→B,AC→D AD→B,AD→C BC→D BD→C
ABC+=ABCD ABD+=ABCD BCD+=BCD
ABC→D ABD→C
ABCD+=ABCD
蕴含于给定函数依赖的非平凡函数依赖共12个。
(2)A为键码。
(3)AB,AC,AD,ABC,ABD,ABCD为超键码。
学习要点三
1. 几个概念
l 主属性:键码所在的属性称为主属性。
l 主属性:键码所在的属性称为主属性。
l 非主属性:键码属性以外的属性称为非主属性。
l 非主属性:键码属性以外的属性称为非主属性。
l 完全依赖:对于函数依赖W → A,如果存在V是W的真子集而函数依赖
V → A成立,则称A部分依赖于W;若不存在这种V,则称A完全依赖于W。
l 传递依赖
对于函数依赖X → Y,如果X不函数依赖于Y,而函数依赖Y → Z成立,则称Z对X传递依赖。
学习要点四
1.第一范式(1NF)
如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关系属于第一范式。
2.第二范式(2NF)
若关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码,则R属于第二范式。
例题:学生关系模式Student(Sno,Sname,Sdept,Mname,Cname,Grade)。
本文转自yonghu86 51CTO博客,原文链接:http://blog.51cto.com/yonghu/1321466,如需转载请自行联系原作者