个人总结
第六章:关系数据理论
6.1 问题的提出
这里提出一个比较基本的问题:针对一个具体问题,应该如何构造一个适合它的数据库模式?
这是一个——关系数据库逻辑设计问题
人们就这个问题进行讨论,形成了一个有力工具:关系数据库的规范化理论
也就是我们接下来的学习重点
作为一个关系表,关系要符合一个最基本的条件:每一个分量必须是不可分的数据项
满足这个条件的关系模式就叫第一范式(1NF)
数据依赖是一个关系内部属性与属性之间的一种约束关系。
这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。
它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。
我们接下来要讨论的主要是两种数据依赖:函数依赖(FD)和多值依赖(MVD)
一个好的模式应当不会发生插入异常、删除异常和更新异常,数据冗(rong)余应尽可能少。
正因为仅符合1NF的数据库设计存在着上面这些问题,所以我们需要提高设计标准,去掉导致上述四种问题的因素,使其符合更高一级的范式(2NF),这就是所谓的“规范化”。
6.2 规范化
首先讨论一个关系属性间不同的依赖情况
讨论如何根据属性间依赖情况来判定关系是否具有某些不合适的性质
通常按属性间依赖情况来区分关系规范化程度为第一范式、第二范式。第三范式和第四范式等
然后直观地描述如何将具有不合适性质的关系转换为更合适的形式。
6.2.1 函数依赖
定义6.1
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称X函数确定Y或Y函数依赖于X,记作X→Y。 X → Y X \rightarrow Y X→Y
白话版:就是类似两元函数的关系——一个自变量的值对应一个因变量的值,不可能有一个X对应多个Y。
☞函数依赖和别的数据依赖一样是语义范畴的概念,只能根据语义来确定一个函数依赖
例如:姓名→年龄这个函数依赖,只有在不存在同姓名的人的条件下才成立
☞函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系都要满足的约束条件。
☞下面介绍一些术语和记号
(1)X→Y,但Y⊈X,则称X→Y是非平凡的函数依赖。
(2)X→Y,但Y⊆X,则称X→Y是平凡的函数依赖。
对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。
若不特别声明, 我们总是讨论非平凡函数依赖。
(3)若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素。
(4)若X→Y,Y→X,则记作X←→Y。
(5)若Y不函数依赖于X,则记作X↛Y。
定义6.2
在R(U)中
如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ Y, 则称Y对X