您的位置:首页 > 数据库

08关系数据库的设计

2017-02-28 01:11 302 查看

关系数据库设计

设计选择

更大的模式

冗余

插入限制

更小的模式

有的联系无法表示

合法实例

一个关系的满足所有这种现实世界约束的实例

超码

令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模式集
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: