第六章 :关系数据理论
了解
“不好”的数据库模式 模式的插入异常和删除异常 规范化理论的重要意义 复制代码
掌握
关系的形式化定义 数据依赖的基本概念(函数依赖、平凡/非平凡/部分/完全/传递函数依赖,码、候选码、外码、多值依赖) 范式的概念,1NF-4NF,规范化的含义和作用 4个范式的理解与应用 各个级别范式中存在的问题和解决方法(插入异常,删除异常,数据冗余) 根据应用语义完整地写出关系模式的数据依赖集合,根据数据依赖分析某一个关系模式属于第几范式
函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码、 (这里我会结合软考中一些知识,更清晰解释这些名词的含义)
函数依赖:
设R (U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R (U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同, 而在Y上的属性值不同, 则称"X函数确定Y"或"Y函数依赖于X",记作X→Y
函数依赖是最基本的一种数据依赖,也是最重要的一种数据依赖。
函数依赖是属性之间的一种联系,体现在属性值是否相等。由上面的定义可以知道,如果X→Y,则r中任意两个元组,若它们在X上的属性值相同,那么在Y上的属性值一定也相同。 我们要从属性间实际存在的语义来确定他们之间的函数依赖,即函数依赖反映了(描述了)现实世界的一种语义。
一句话:常见的有一杯奶茶,依赖于奶茶和奶茶杯,也就是A,B—>C
函数依赖不是指关系模式R的在某个时刻的关系(值)满足的约束条件,而是指R任何时刻的一切关系均要满足的约束条件
完全函数依赖、部分函数依赖:
在R(U)中,如果X→Y,并且对于X的任何一个真子集X,都有X′→Y,则称Y对X完全函数依赖;若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖
一句话:你有一百块钱能买10元店的任何东西,这就是完全依赖;但是来到其他更高级的店,只能买到一部分东西。这就是部分依赖
候选码、主码:
设K为R(U,F)中的属性或属性组合,若K → U则K为R的候选码。若候选码多于一个,则选定其中的一个为主码 外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码也称外码 全码:整个属性组是码,称为全码(All-key)
一句话:跟之前看的外键,主键几乎一样的概念
1NF、2NF、3NF、BCNF、多值依赖、4NF
1NF:如果一个关系模式R的所有属性都是不可分的基本数据项,R∈1NF 第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库
一句话:你可以回想一下数据库的原子性例子:
2NF:若关系模式R∈1NF,并且每一个非主属性都完全依赖于R的码,则R∈2NF
例子:
一句话:未消除部分依赖,存在着依赖关系,就是需要通过主键来确定
3NF:关系模式R<U,F>中若不存在这样的码X,属性组Y及非主属性Z(Z不包含于Y)使得X→ Y,(Y不→ X),Y→ Z成立,则称R<U,F>∈3NF
例子:
BCNF:关系模式R<U,F>∈1NF.若X→ Y且(Y不包含于X)时X必含有码,则R<U,F>∈BCNF
前面的关系总结如下图
多值依赖:
设R (U)是属性集U上的一个关系模式,X、Y、Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→ → Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关
4NF:
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→ → Y(Y不包含于X),X都含有码,则称R<U,F>∈4NF
注意:并不是范式越高越好,一般在2NF或者3NF