暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

总复习(6)——关系数据理论

凯哥的故事 2020-07-03
623



本章讨论关系数据理论。第(1)节从数据库逻辑设计中如何构造一个好的数据库模式这一问题出发,阐明了关系规范化理论研究的实际背景。第(2)节介绍规范化理论,讨论各种范式及可能存在的插入、删除等问题,并直观地描述解决办法。第(3)节和第(4)节进一步讨论关系数据理论。本章所有内容中,第(1)和第(2)两节内容是基本的,本科学生需要掌握,第(3)和第(4)两节则可作为研究生的学习内容。

问题的提出

前面已经讨论了数据库系统的一般概念,介绍了关系数据库的基本概念、关系模型的三个部分以及关系数据库的标准语言SQL。但是还有一个很基本的问题尚未涉及:针对一个具体问题,应该如何构造一个适合于它的数据库模式,即应该构造几个关系模式,每个关系由哪些属性组成等。这是数据库设计的问题,确切地讲是关系数据库逻辑设计问题。

数据库逻辑设计的一个有力工具——关系数据库的规范化理论

在第2章关系数据库中已经讲过,一个关系模式应当是一个五元组。

R(U, D, DOM, F)

这里:

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

  • U为一组属性。

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

  • DOM为属性到域的映射。

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

由于D、DOM与模式设计关系不大,因此在本章中把关系模式看作一个三元组:

R<U, F>

当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系。

作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式(1NF)

数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。

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

假设用一个单一的关系模式Student来表示学生的学号、所在系、系主任姓名、课程号和成绩。则存在以下问题:

  1. 数据冗余

  2. 更新异常

  3. 插入异常

  4. 删除异常

一个好的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应尽可能少。

规范化

①函数依赖

设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定YY函数依赖于X,记作X→Y。

函数依赖和别的数据依赖一样是语义范畴的概念,只能根据语义来确定一个函数依赖。

下面介绍一些术语和记号。

①X→Y,但Y⊄X,则称X→Y是非平凡的函数依赖

②X→Y,但Y⊆X,则称X→Y是平凡的函数依赖

③若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素

④若X→Y,Y→X,则记作X←→Y。

⑤若Y不函数依赖于X,则记作X↛Y。

②码

码是关系模式中的一个重要概念。

设K为R<U,F>中的属性或属性组合,若K完全依赖于U,则K为R的候选码

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

若候选码多于一个,则选定其中的一个为主码

包含在任何一个候选码中的属性称为主属性不包含在任何候选码中的属性称为非主属性非码属性。最简单的情况,单个属性是码:最极端的情况,整个属性组是码,称为全码

③范式

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

1971-1972年Codd系统地提出了1NF2NF3NF的概念,1974年,Codd和Boyce共同提出了一个新范式,即BCNF。1976年Fagin提出了4NF。后来又有研究人员提出了5NF

对于各种范式之间的关系有

5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF

如下图所示

一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化

④2NF

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

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

  1. 插入异常

  2. 删除异常

  3. 修改复杂

⑤3NF

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

⑥BCNF

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

也就是说,关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>∈BCNF。

由BCNF的定义可以得到结论,一个满足BCNF的关系模式有:

  • 所有非主属性对每一个码都是完全函数依赖。

  • 所有主属性对每一个不包含它的码也是完全函数依赖。

  • 没有任何属性完全函数依赖于非码的任何一组属性。

3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度。一个模式中的关系模式如果都属于BCNF,那么在函数依赖范畴内它已实现了彻底的分离,已消除了插入和删除的异常。3NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖。

⑦多值依赖

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

若X→→Y,而Z=φ,即Z为空,则称X→→Y为平凡的多值依赖。即对于R(X,Y),如果有X→→Y成立,则X→→Y为平凡的多值依赖。

多值依赖具有以下性质:

  1. 多值依赖具有对称性。

  2. 多值依赖具有传递性。

  3. 函数依赖可以看作是多值依赖的特殊情况。

  4. 若X→→Y,X→→Z,则X→→YZ。

  5. 若X→→Y,X→→Z,则X→→Y∩Z。

  6. 若X→→Y,X→→ Z,则X→→Y-Z,X→→Z-Y。

多值依赖与函数依赖相比,具有下面两个基本的区别:

(1)多值依赖的有效性与属性集的范围有关。

(2)若函数依赖X→Y在R(U)上成立,则对于任何Y'⊂Y均有X→Y'成立。而多值依赖 X→→Y若在R(U)上成立,却不能断言对于任何Y'⊂Y有X→Y'成立。 

⑧4NF

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

4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

⑨规范化小结

在关系数据库中,对关系模式的基本要求是满足第一范式,这样的关系模式就是合法的、允许的。但是,人们发现有些关系模式存在插入、删除异常,以及修改复杂、数据冗余等问题,需要寻求解决这些问题的方法,这就是规范化的目的。

规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”,即“一事一地”的模式设计原则。让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。因此所谓规范化实质上是概念的单一化。

人们认识这个原则是经历了一个过程的。从认识非主属性的部分函数依赖的危害开始,2NF、3NF、BCNF、4NF的相继提出是这个认识过程逐步深化的标志,下图可以概括这个过程。

关系模式的规范化过程是通过对关系模式的分解来实现的,即把低一级的关系模式分解为若干个高一级的关系模式。这种分解不是唯一的。下面将进一步讨论分解后的关系模式与原关系模式“等价”的问题以及分解的算法。

数据依赖的公理系统

定理1 点击了解详情


定理2 点击了解详情


小 结

本章在函数依赖、多值依赖的范畴内讨论了关系模式的规范化,其基本思想可用下图表示。

在整个讨论过程中,只采用了两种关系运算——投影和自然连接,并且总是从一个关系模式出发,而不是从一组关系模式出发实行分解。“等价”的定义也是一组关系模式与一个关系模式的“等价”,这就是说,在开始讨论问题时事实上已经假设了存在着一个单一的关系模式,这就是泛关系假设。


本章一开始就指出这是研究模式设计的一种特殊情况:“假设已知一个模式Sφ,它仅由单个关系模式组成,问题是要设计一个模式SD,它与Sφ等价,但在某些方面更好一些”。


泛关系假设是运用规范化理论时的障碍,因为承认了泛关系假设就等于承认了现实世界各实体间只能有一种联系,而这常常是办不到的。比如工人与机器之间就可以存在“使用”、“维护”等多种联系。对此人们提出了一些办法,希望解决这个矛盾。例如建立一个不受泛关系假设限制的理论,或者采用某些手段使现实世界向信息世界转换时适合于泛关系的要求。


最后应当强调的是,规范化理论为数据库设计提供了理论的指南和工具,但仅仅是指南和工具。并不是规范化程度越高模式就越好,必须结合应用环境和现实世界的具体情况。


文章转载自凯哥的故事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论