3-5

来源:百度文库 编辑:神马文学网 时间:2024/05/04 05:22:15


3.5.1 多值依赖
1.实例
   ①关系模式R(COURSE,STUDENT,PRECOURSE)的属性分别表示课程、选修该课程的学生以及该课程的先修课。这个模式表达了两件事情:选修课程的学生,课程的先修课。
   ②COURSE值与STUDENT值、COURSE值与PRECOURSE值之间都是1:N联系,并且这两个1:N联系是独立的。也就是选修一门课程的学生,必须选修这门课程的所有先修课。
   ③模式的键是全部属性,因此R已是BCNF模式,但有很大的冗余。如果C4这门课程有100个学生选修,并且C4这门课程有4门直接的先修课,那么在表中将会有400个元组。
   ④如果把R分解成R1(COURSE,STUDENT)和R2(COURSE,PRECOURSE),就能消除冗余。
   ⑤非形式地说,只要两个独立的1:N联系出现在一个关系中,那么就可能出现多值依赖。
2.多值依赖的形式定义
  (1)设U是关系模式R的属性集,X和Y是U的子集,Z=R―X―Y,小写的xyz表示属性集XYZ的值。对于R的关系r,在r中存在元组(x,y1,z1)和(x,y2,z2)时,就也存在元组(x,y2,z1)和(x,y1,z2),那么称多值依赖(multivalued dependency,简记为MVD)X→→Y在模式R上成立。
  (2)可看出,每个X值对应一组Y值,但与Z值无关,则X→→Y成立。
  (3)另外还可看出,这个定义具有对称性,即R中只要有X→→Y,R中也就有X→→Z。
  (4)即X→→Y和X→→Z同时成立,故有时写成X→→Y│Z。
3.5.2 第四范式(4NF)
1.4NF的定义
设D是关系模式R上成立的FD和MVD集合。如果D中每个非平凡的MVD X→→Y的左部X都是R的超键,那么称R是4NF的模式。
2.实例
(1)模式R(COURSE,STUDENT,PRECOURSE)中,键是(COURSE,STUDENT,PRECOURSE)。
(2)在MVD COURSE→→STUDENT和COURSE→→PRECOURSE的左部都未包含键,因此R不是4NF。
(3)若把R分解成R1(COURSE,STUDENT)和R2(COURSE,PRECOURSE)以后,则R1和R2都是4NF。
3.是4NF的模式肯定是BCNF模式。