08关系数据库的设计
2017-02-28 01:11
375 查看
关系数据库设计
设计选择
更大的模式冗余
插入限制
更小的模式
有的联系无法表示
合法实例
一个关系的满足所有这种现实世界约束的实例超码
令r(R)是一个关系模式。R的子集K是r(R)的超码的条件是:在关系r(R)的任意合法实例中,对于r的实例中的所有元组对t1和t2总满足,若t1≠t2,则t1[K]≠t2[K]。表达数据库一致性约束的方式
主码约束函数依赖
check约束
断言
触发器
依赖
函数依赖
令r(R)是一个关系模式,α,β∈R。给定r(R)的一个实例,我们说这个实例满足函数依赖α→β的条件是:对于r的实例中的所有元组对t1和t2总满足,若t1[α]=t2[α],则t1[β]=t2[β]- 如果在r(R)的每个合法实例中都满足函数依赖α→β,则函数依赖在模式r(R)上成立
- 如果函数依赖K→R,则K是r(R)的一个超码
- 有些函数依赖称为平凡的,因为它们在所有关系中都满足。一般地,如果,β∈α,则形如α→β的函数依赖是平凡的
多值依赖
令r(R)为一关系模式,多值依赖α→→β在R上成立的条件是,在r(R)任意合法实例中,对于r中任意一对满足t1[α]=t2[α] 的元组对t1和t2,r中都存在元组t3和t4,使得- t_1[α]=t_2[α]=t_3[α]=t_4[α]
- t_1[β] = t_3[β]
- t_3[R – α–β] = t_2[R– α –β]
- t_2[β] = t_4[β]
- t_4[R – α–β] = t_1[R– α –β]
由多值依赖的定义,可以得到
- 若α→β,则α→→β
- 若α→→β,则α→→R−β−α
保持依赖
令F为R上的一个函数依赖集,R1,R2,…,Rn是R的一个分解,F在Ri上的限定是F+中所有只包含Ri中属性的函数依赖的集合Fi令F′=F1∪F2∪..Fn,如果F′+=F+,则分解为保持依赖的
闭包
Armstrong公理
自反律:如果β∈α,那么α→β增补律:如果α→β,那么γα→γβ
传递律:如果α→β,并且β→γ,那么α→γ
推论
合并律:如果α→β并且α→γ,那么α→βγ分解律:如果α→βγ,那么α→β并且α→γ
伪传递律:如果α→β并且γβ→δ,那么αγ→δ
函数依赖集的闭包
令F为一个函数依赖集,F的闭包时被F逻辑蕴涵的所有函数依赖的集合,记作F+属性集的闭包
将函数依赖集F下被α函数确定的所有属性的集合称为F下α的闭包,记作α+计算方法
- 初始α+=α
- 对于每一个函数依赖β→γ ,如果β∈α+,将γ加入α+
覆盖
无关属性
考虑函数依赖集F及F中函数依赖α→β- 如果A∈α并且F逻辑蕴涵(F−{α→β})∪{(α−A)→β},则A在α中是无关的
- 令γ=α−A,计算F下γ+,如果γ+包含β的所有属性,则A在α中是无关的
- 如果A∈β并且(F−{α→β})∪{α→(β−A)}逻辑蕴涵F,则A在β 中是是无关的
- 计算(F−{α→β})∪{α→(β−A)}下α+,如果α+包含A,则A在β中是无关的
正则覆盖
F的正则覆盖Fc是一个依赖集,使得F逻辑蕴涵Fc的所有依赖,并且Fc逻辑蕴涵F的所有依赖,此外,Fc具有如下性质- Fc中任何函数依赖都不含无关属性
- Fc中函数依赖的左半部都是唯一的,即Fc不存在两个依赖α1→β1和α2→β2,满足α1=α2
计算方法
使用合并律将α1→β1和α1→β2替换成α1→β1β2将含有无关属性的函数依赖删去
最小覆盖
如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖- F中的任何一个函数依赖的右部仅含有一个属性;
- F中不存在这样一个函数依赖X→A,使得F与F−{X→A}等价;
- F中不存在这样一个函数依赖X→A,X有真子集Z使得F−{X→A}∪{Z→A}与F等价。
求解最小函数依赖集分三步
将F中的所有依赖右边化为单一元素去掉F中的所有依赖左边的冗余属性
去掉F中所有冗余依赖关系
分解
无损分解:令R1和R2为R的分解,如果用r(R1)和r(R2)代替r(R)时没有信息损失,即把r投影到R1和R2上,然后计算投影结果的自然连接,仍然得到一模一样的r有损分解
分解的目标
确定一个偏序关系R是不是好的形式如果不是,把它分解为关系集{R1,R2,…,Rn},每一个Ri都是好的形式,并且分解是无损的
理论基础:函数依赖,多值依赖
第一范式
如果R的所有属性的域都是原子的- 原因
- 非原子会使存储复杂,数据冗余
BCNF范式
对F+中所有形如α→β的函数依赖,下面至少有一项成立- α→β是平凡的函数依赖(即β∈α)
- α是模式R的一个超码
设R不属于BCNF的一个模式,则存在至少一个非平凡的函数依赖α→β,其中α不是R的超码,则可以用α∪β和R−(β−α)取代R
无损分解,可能不是保持依赖的
第二范式
如果关系R属于NF,且每一个非主码完全函数依赖于码,则关系R$属于第二范式第三范式
对F+中所有形如α→β的函数依赖,下面至少有一项成立- α→β是平凡的函数依赖(即β∈α)
-α是模式R的一个超码
- β−α中的每个属性A都包含于R的任意一个候选码中
第三范式是BCNF的最小放宽
无损分解,保持依赖,可能用空值表示数据联系
第四范式
D是函数依赖和多值依赖集,对所有D+中所有形如α→→β的多值依赖,至少以下一个成立- α→→β是一个平凡的多值依赖
- α是R的一个超码
各种范式之间的联系
5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF常见分解
无损分解为BCNF模式集初始为{R}
对于F中每一个非平凡函数依赖X→Y,X不包含超码,就把R分解为{R−Y,XY}
无损分解为3NF模式集
相关文章推荐
- Rational Database Design Process 关系数据库设计过程一——定义“关系”(译)
- ORACLE关系数据库设计
- 关系数据库的几种设计范式
- 数据库设计的5种常见关系
- 数据库设计的5种常见关系
- 面向对象的关系数据库设计
- 数据库设计多对多关系的几种形态
- 从职责归属看数据库中关系设计
- 关系数据库的几种设计范式
- 面向对象的关系数据库设计
- 面向对象的关系数据库设计
- 关系数据库的几种设计范式
- 从职责归属看数据库中关系设计
- 关系数据库设计的规范化与非规范化之争
- 关系数据库设计理论(2) 函数依赖
- 论如何设计关系数据库结构
- 从职责归属看数据库中关系设计
- 关系数据库设计理论(5) 关系模式的规范化
- 面向对象的关系数据库设计
- 关系数据库设计