数据库笔记(第六章)

  关系数据理论
一:关系模式由五部分组成,是一个五元组:  R(U, D, DOM, F)

关系名R是符号化的元组语义

U为一组属性

D为属性组U中的属性所来自的域

DOM为属性到域的映射

F为属性组U上的一组数据依赖

二:一对一联系

设X,Y为关系中的属性或属性组,它们的所有可能取值组成两个集合。如果对于X中的任一具体值Y中至多有一个值与之对应,称X,Y这两个属性之间是一对一联系

三:多对多联系

在X,Y两个属性值集中,如果任一个值都可以至多和另一个属性值集中多个值对应,反之亦然,则称属性X和Y是m:n关系。

四:数据依赖

是一个关系内部属性与属性之间的一种约束关系

通过属性间值的相等与否体现出来的数据间相互联系

是现实世界属性间相互联系的抽象

是数据内在的性质

是语义的体现

五:数据依赖的主要类型

函数依赖(Functional Dependency,简记为FD)

多值依赖(Multi-Valued Dependency,简记为MVD)

六:关系模式Student<U, F>中存在的问题:

(1)数据冗余

浪费大量的存储空间

每一个系主任的姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。

(2)更新异常(Update Anomalies)

数据冗余 ,更新数据时,维护数据完整性代价大。

某系更换系主任后,必须修改与该系学生有关的每一个元组。

(3)插入异常(Insertion Anomalies)

如果一个系刚成立,尚无学生,则无法把这个系及其系主任的信息存入数据库。

(4)删除异常(Deletion Anomalies)

如果某个系的学生全部毕业了, 则在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。

七:规范化

规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

1.函数依赖

函数依赖

平凡函数依赖与非平凡函数依赖

完全函数依赖与部分函数依赖

传递函数依赖

2:码

定义6.4  设K为R<U,F>中的属性或属性组合。若K → U,则K称为R的一个候选码(Candidate Key)。

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

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

定义6.5  关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。

SC(Sno,Cno,Grade)中,Sno不是码

Sno是 S(Sno,Sdept,Sage)的码,则Sno是SC的外码

主码与外部码一起提供了表示关系间联系的手段

3:范式

范式是符合某一种级别的关系模式的集合。

关系数据库中的关系必须满足一定的要求。满足   不同程度要求的为不同范式。

范式的种类:第一范式(1NF)   第二范式(2NF)   第三范式(3NF)    BC范式(BCNF)

第四范式(4NF)   第五范式(5NF)

4:2NF

 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF

一个关系模式不属于2NF,会产生以下问题:

插入异常

如果插入一个新学生,但该生未选课,即该生无Cno,由于插入元组时,必须给定码值,因此插入失败。

删除异常

如果S4只选了一门课C3,现在他不再选这门课,则删除C3后,整个元组的其他信息也被删除了。

修改复杂

如果一个学生选了多门课,则Sdept,Sloc被存储了多次。如果该生转系,则需要修改所有相关的Sdept和Sloc,造成修改的复杂化。

出现这种问题的原因

例子中有两类非主属性:

一类如Grade,它对码完全函数依赖

另一类如Sdept、Sloc,它们对码不是完全函数依赖

解决方法:

用投影分解把关系模式S-L-C分解成两个关系模式

SC(Sno,Cno,Grade)

S-L(Sno,Sdept,Sloc)

5:设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ X不成立,则称R<U,F> ∈ 3NF。

SC没有传递依赖,因此SC ∈ 3NF

不良特性

插入异常:如果系中没有学生,则有关系的信息就无法插入。

删除异常:如果学生全部毕业了,则在删除学生信息的同时有关系的信息也随之删除了。

更新异常:如果学生转系,不但要修改SDept,还要修改Sloc,如果换Sloc,则该系每个学生元组都要做相应修改。

数据冗余:每个学生都存储了所在系的Sloc的信息。

解决方法

   采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:

            S-D(Sno, Sdept)

                D-L(Sdept,Sloc)

S-D的码为Sno, D-L的码为Sdept。

分解后的关系模式S-D与D-L中不再存在传递依赖

6:BCNF

BCNF(Boyce Codd Normal Form)由Boyce和Codd提出,比3NF更进了一步。通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。

定义6.8  设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。

换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。

7:多值依赖

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

8:4NF

关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。

不允许有非平凡且非函数依赖的多值依赖。

允许的非平凡多值依赖实际上是函数依赖。

八:在关系数据库中,对关系模式的基本要求是满足第一范式。

规范化程度过低的关系不一定能够很好地描述现实世界

可能存在插入异常、删除异常、修改复杂、数据冗余等问题

解决方法就是对其进行规范化,转换成高级范式。

九:数据依赖的公理系统

对于满足一组函数依赖F的关系模式   R <U,F>,其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组t、s,若t[X]=s[X],则 t[Y]=s[Y]),则称F逻辑蕴涵X →Y。

十:算法:

 令ai =|X(i)|,{ai }形成一个步长大于1的严格递增的序列,序列的上界是 | U |,因此该算法最多 |U| - |X| 次循环就

  会终止。

由引理二,判定X®Y是否能由F根据Armstrong公理导出,可转化为求      ,判定YÍ       是否成立。

输入:X,F

输出:

 1)                         := X;

     2)考察每个F中的函数依赖 A®B,  

 若 A Í        ,则        :=      ÈB

3)继续考察,直到     不再增大为止。

猜你喜欢

转载自blog.csdn.net/sdau20171761/article/details/84934451