第六章总结

目录

  • 一.问题的提出
  • 二.规范化
    • 1.函数依赖
    • 2.码
    • 3.范式
    • 4.2NF
    • 5.3NF
    • 6.BCNF
    • 7.多值依赖
    • 8.4NF
  • 三.规范化小结

一.问题的提出

一个关系模式应该是一个五元组
R ( U , D , D O M , F ) R(U,D,DOM,F) R(U,D,DOM,F)
这里:
–关系名R是符号化的元组语义。
–U为一组属性。
–D为属性组U中的属性所来自的域
–DOM为属性到域的映射
–F为属性组U上的一组数据依赖

人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖多值依赖

例题:
建立一个描述学校教务的数据库,该数据库涉及的对象包括学生的学号,所在系,系主任姓名,课程号和成绩。假设用一个单一的关系魔术师来表示,则该关系模式的属性集合为:
U={Sno,Sdept,Mname,Cno,Grade}
得到的函数依赖是:
F={ S n o → S d e p t Sno \rightarrow Sdept SnoSdept, S d e p t → M n a m e Sdept \rightarrow Mname SdeptMname, ( S n o , C n o ) → G r a d e (Sno,Cno) \rightarrow Grade (Sno,Cno)Grade}

但是这样单一的一个表会出现很多问题:
比如说:数据冗余,更新异常,插入异常,删除异常。
这是因为这个模式的数据依赖存在一些不好的性质。把他改造一下得到
S(Sno,Sdept, S n o → S d e p t Sno \rightarrow Sdept SnoSdept);
SC(Sno,Cno,Grade, ( S n o , C n o ) → G r a d e (Sno,Cno) \rightarrow Grade (Sno,Cno)Grade);
DEPT(Sdept,Mname, S d e p t → M n a m e Sdept \rightarrow Mname SdeptMname);

二.规范化

1.函数依赖

1. x → y x \rightarrow y xy,但 y ⊈ x y \nsubseteq x yx,则称 x → y x \rightarrow y xy是非平凡的函数依赖。
2. x → y x \rightarrow y xy,但 y ⊆ x y \subseteq x yx,则称 x → y x \rightarrow y xy是平凡的函数依赖。对于任意关系模式,平凡函数依赖是必然成立的,它不反映新的语义。
3.若 x → y x \rightarrow y xy,则x称为这个函数依赖的决定属性组,也称为决定因素
4.若 x → y x \rightarrow y xy y → x y \rightarrow x yx,则记做 x ← → y x \leftarrow\rightarrow y xy
5.若y不函数依赖于x,则记做 x ↛ y x \nrightarrow y xy
定义6.2
在R(U)中,如果 x ← y x \leftarrow y xy,并且对于x的任意一个真子集x1,都有 x 1 ↛ y x1 \nrightarrow y x1y,则称y对x完全函数依赖,记做 X → F Y X \overset F \rightarrow Y XFY

定义6.3:
在R(U)中,如果 x ↛ y x \nrightarrow y xy y ⊈ x y \nsubseteq x yx), y ↛ x y \not\rightarrow x yx, y ↛ z y \nrightarrow z yz, z ⊈ y z \nsubseteq y zy则称z对x传递函数依赖。记为 x ⟶ 传 递 y x \overset {传递} \longrightarrow y xy

2.码

定义6.4
设K为R中的属性或属性组合。若K → U,则K称为R的一个候选码

如果U部分函数依赖于K,即K → U,则K称为超码
候选码是最小的超码,即K的任意真子集都不是候选码。

若关系模式R有多个候选码,则选定其中的一个做为主码

包含在任何一个候选码中的属性 ,称为主属性,不包含在任何码中的属性称为非主属性

整个属性组是码,称为全码

3.范式

第六章总结_第1张图片
对于各种范式之间的关系有
5 N F ⊂ 4 N F ⊂ B C N F ⊂ 3 N F ⊂ 2 N F ⊂ 1 N F 5NF \subset 4NF \subset BCNF \subset 3NF \subset 2NF \subset 1NF 5NF4NFBCNF3NF2NF1NF

4.2NF

例6.4 有关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)。其中Sloc为学生的住处,并且每个系的学生住在同一个地方。则函数依赖:
( S n o , C n o ) → F G r a d e (Sno,Cno) \overset F \rightarrow Grade (Sno,Cno)FGrade
S n o → S d e p t Sno \rightarrow Sdept SnoSdept , ( S n o , C n o ) → p S d e p t (Sno,Cno) \overset p \rightarrow Sdept (Sno,Cno)pSdept
S n o → S l o c Sno \rightarrow Sloc SnoSloc, ( S n o , C n o ) → p S l o c (Sno,Cno) \overset p \rightarrow Sloc (Sno,Cno)pSloc,
S d e p t → S l o c Sdept \rightarrow Sloc SdeptSloc(每个系的学生只住在同一个地方)

一个关系如果不属于2NF,就会产生以下几个问题:
(1)插入异常。如果要插入一个学生但是这个学生还没有选课那么就无法插入,这样不符合需求
(2)删除异常。如果某个学生只选了一门课,如果这门课他决定不选了那么这个课程就要删除,因为课程是主属性所以删除了它那么整个元组都会删除,从而造成删除异常。
(3)修改复杂。修改的数据重复如果要修改一个数据时那么要连续修改许多次。

解决这些问题那么达到2NF

5.3NF

定义6.7
设关系模式R属于1NF,若R中不存在码X,属性组Y及非属性z使得 x → y x \rightarrow y xy y → z y \rightarrow z yz成立, y ↛ x y \nrightarrow x yx,则称R属于3NF。

也就是要达到3NF的话就必须在2NF的基础上去除传递函数依赖

6.BCNF

BC范式通常认为是修正的第三范式,在第三范式的条件上添加了一些条件

定义6.8
关系模式R中,若 x → y x \rightarrow y xy y ⊄ x y \not\subset x yx时必包含码,则
R < U , F > ⊄ B C N F R \not\subset BCNF R<U,F>BCNF

也就是说,关系模式R中,若每一个决定因素都包含码,则 R < U , F > ⊂ B C N F R \subset BCNF R<U,F>BCNF
一个满足BCNF的关系有:
1.所有非主属性对每一个码都是完全函数依赖。
2.所有主属性对每一个不包含它的码也是完全函数依赖。
3.没有任何属性完全函数依赖与非码的任何一组属性。

7.多值依赖

定义6.9
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。
关系模式R(U)中多值依赖 X → → Y X \rightarrow\rightarrow Y XY 成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而于z的值无关。

多值依赖具有对称性: X → → Y X \rightarrow\rightarrow Y XY,则 X → → Z X \rightarrow\rightarrow Z XZ,其中Z=U-X-Y。

多值依赖具有传递性: X → → Y X \rightarrow\rightarrow Y XY Y → → Z Y \rightarrow\rightarrow Z YZ,则 X → → Z X \rightarrow\rightarrow Z XZ

8.4NF

4NF是在BCNF的基础上增加一个条件。不允许出现非平凡且非函数的多值依赖。
定义6.10:
关系模式 R < U , F > ⊂ 1 N F R \subset 1NF R<U,F>1NF,如果对于R的每个非平凡的多值函数依赖 X → → Y X \rightarrow\rightarrow Y XY,x都含有码,则称 R < U , F > ⊂ 4 N F R \subset 4NF R<U,F>4NF

如果一个关系模式是4NF,则必为BCNF。

三.规范化小结

第六章总结_第2张图片

你可能感兴趣的:(数据库)