08关系数据库的设计

来源:互联网 发布:组态王软件代理 编辑:程序博客网 时间:2024/06/07 22:26

关系数据库设计

设计选择

  • 更大的模式
    • 冗余
    • 插入限制
  • 更小的模式
    • 有的联系无法表示

合法实例

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

超码

r(R)是一个关系模式。R的子集Kr(R)的超码的条件是:在关系r(R)的任意合法实例中,对于r的实例中的所有元组对t1t2总满足,若t1t2,则t1[K]t2[K]


表达数据库一致性约束的方式

  • 主码约束
  • 函数依赖
  • check约束
  • 断言
  • 触发器

依赖

函数依赖

r(R)是一个关系模式,α,βR。给定r(R)的一个实例,我们说这个实例满足函数依赖αβ的条件是:对于r的实例中的所有元组对t1t2总满足,若t1[α]=t2[α],则t1[β]=t2[β]
- 如果在r(R)的每个合法实例中都满足函数依赖αβ,则函数依赖在模式r(R)上成立
- 如果函数依赖KR,则Kr(R)的一个超码
- 有些函数依赖称为平凡的,因为它们在所有关系中都满足。一般地,如果,βα,则形如αβ的函数依赖是平凡的

多值依赖

r(R)为一关系模式,多值依赖αβ在R上成立的条件是,在r(R)任意合法实例中,对于r中任意一对满足t1[α]=t2[α] 的元组对t1t2r中都存在元组t3t4,使得
- 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βα

保持依赖

FR上的一个函数依赖集,R1,R2,,RnR的一个分解,FRi上的限定是F+中所有只包含Ri中属性的函数依赖的集合Fi
FF1F2..Fn,如果F+=F+,则分解为保持依赖的


闭包

Armstrong公理

  • 自反律:如果βα,那么αβ
  • 增补律:如果αβ,那么γαγβ
  • 传递律:如果αβ,并且βγ,那么αγ

推论

  • 合并律:如果αβ并且αγ,那么αβγ
  • 分解律:如果αβγ,那么αβ并且αγ
  • 伪传递律:如果αβ并且γβδ,那么αγδ

函数依赖集的闭包

F为一个函数依赖集,F的闭包时被F逻辑蕴涵的所有函数依赖的集合,记作F+

属性集的闭包

将函数依赖集F下被α函数确定的所有属性的集合称为Fα的闭包,记作α+
计算方法
- 初始α+α
- 对于每一个函数依赖βγ ,如果βα+,将γ加入α+


覆盖

无关属性

考虑函数依赖集FF中函数依赖αβ
- 如果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中不存在这样一个函数依赖XA,使得FF{XA}等价;
- F中不存在这样一个函数依赖XAX有真子集Z使得F{XA}{ZA}F等价。

求解最小函数依赖集分三步

  • F中的所有依赖右边化为单一元素
  • 去掉F中的所有依赖左边的冗余属性
  • 去掉F中所有冗余依赖关系

分解

  • 无损分解:令R1R2R的分解,如果用r(R1)r(R2)代替r(R)时没有信息损失,即把r投影到R1R2上,然后计算投影结果的自然连接,仍然得到一模一样的r
  • 有损分解

分解的目标

  1. 确定一个偏序关系R是不是好的形式
  2. 如果不是,把它分解为关系集{R1,R2,,Rn},每一个Ri都是好的形式,并且分解是无损的
  3. 理论基础:函数依赖,多值依赖

第一范式

如果R的所有属性的域都是原子的
- 原因
- 非原子会使存储复杂,数据冗余

BCNF范式

F+中所有形如αβ的函数依赖,下面至少有一项成立
- αβ是平凡的函数依赖(即βα
- α是模式R的一个超码

R不属于BCNF的一个模式,则存在至少一个非平凡的函数依赖αβ,其中α不是R的超码,则可以用αβR(βα)取代R
无损分解,可能不是保持依赖的

第二范式

如果关系R属于NFR$属于第二范式

第三范式

F+中所有形如αβ的函数依赖,下面至少有一项成立
- αβ是平凡的函数依赖(即βα
-α是模式R的一个超码
- βα中的每个属性A都包含于R的任意一个候选码中

第三范式是BCNF的最小放宽
无损分解,保持依赖,可能用空值表示数据联系

第四范式

D是函数依赖和多值依赖集,对所有D+中所有形如αβ的多值依赖,至少以下一个成立
- αβ是一个平凡的多值依赖
- α是R的一个超码

各种范式之间的联系

5NF4NFBCNF3NF2NF1NF
这里写图片描述

常见分解

  • 无损分解为BCNF模式集
    • 初始为{R}
    • 对于F中每一个非平凡函数依赖XYX不包含超码,就把R分解为{RY,XY}
  • 无损分解为3NF模式集
0 0
原创粉丝点击