Note04- 关系数据库设计

关系数据库设计的任务就是把概念数据库设计阶段产生的概念数据库模式变换为关系数据库模式

由 E-R 模型到关系模型

实体和属性的变换

实体间联系的变换

关系模式规范化

初始关系模式不是逻辑设计的最终结果,其中某些关系模式可能存在由属性间的函数依赖引起的冗余问题、插入问题、更新问题和删除问题。

函数依赖

:::tip 定义

R 是一个关系模式,UR 的属性集合,XYU 的子集。对于 R 的任意实例 rr 中任意两个元组 t1t2,如果 t1[X]=t2[X],则 t1[Y]=t2[Y],我们称 X 函数地确定 Y,或 Y 函数依赖于X,记作 XY

如果 XY 而且 Y 不是 X 的子集,则称 XY非平凡函数依赖。若不特别声明,我们总是讨论非平凡函数依赖。

如果 XY,我们称 X 为这个函数依赖的决定属性集

:::

我们还可以定义出完全依赖

:::tip 定义

R 是一个具有属性集合 U 的关系模式,如果 XY,并且对于 X 的任何一个真子集 ZZY 都不成立,则称 Y完全函数依赖X。若 XY,但 Y 不完全函数依赖于 X,则称 Y部分函数依赖X

:::

传递依赖:

:::tip 定义

R 是一个具有属性集合 U 的关系模式,XU,YU,ZU,YX 不成立,ZXZYYX 不空。如果 XYYZ,则称 Z传递地函数依赖于X

:::

超码、候选码和主码:

:::tip 定义

R 是一个具有属性集合 U 的关系模式, KU。若 KU,则称 KR 的一个超码,如果不存在 K 的真子集 Z,使得 ZU,则称 KR 的一个候选码

:::

函数的依赖的公理系统

:::tip 定义

R 是一个具有属性集合 U 的关系模式,FR 上的函数依赖集合。如果对于 R 的任意一个使 F 成立的关系实例 r,函数依赖 XY 都成立,则称 F 逻辑地蕴含XY

:::

包含三条推理规则:

由此又可导出三条规则:

由合并规则和分解规则可得引理:

:::info 引理

XA1A2Ak 成立的充分必要条件为 XAi 均成立

:::

闭包

给出闭包的定义

:::tip 定义

在关系模式 R<U,F> 中为 F 所逻辑蕴含的函数依赖的全体叫作 F闭包,记为 F+。设 XUXF+={A|XA}XF+ 称为属性集 X 关于函数依赖集 F 的闭包。

:::

如果 X 的闭包与 U 相等,那么说明 XR 的超码

求闭包流程:

  1. X 加入闭包中。
  2. 逐一扫描 F 的各个函数依赖,如果函数依赖的左部是当前闭包的子集,则把右部加入闭包
  3. 判断闭包是否为 U,或者是否找不到未用过的函数依赖,如果是则停止,否则回到第 2 步

求解候选码

将属性分为四类:

显然,L 类属性和 N 类属性一定在 R 的任一候选码中,R 类属性一定不在任一候选码中。我们只需要得到 L 类属性和 N 类属性,放到一个集合,判断它们的闭包是否为 U,若是,则一定为候选码,且为唯一的候选码

求解极小函数依赖集

:::tip 定义

如果函数依赖集 F 满足下列条件,则称 F 为一个极小函数依赖集。亦称为极小覆盖:

:::

算法:

  1. 逐一检查 F 中各函数依赖 XY,若 Y=A1A2Akk2,则用 XAj|j=1,2,,k 来取代 XY
  2. 循环地检查 F 中各函数依赖 XA,令 G=F{XA},若 XAXG+, 则从 F 中去掉此函数依赖
  3. 循环地取出 F 中各函数依赖 XA,设 X=B1B2Bm,逐一考查 Bi(i=l,2,,m),若 A(XBi)F+,则以 XBiA 取代 XA

范式

第一范式:

:::tip 定义

R 是一个关系模式。如 R 的每个属性的值域都是不可分的简单数据项的集合,则称这个关系模式为第一范式关系模式,记作 1NF。

:::

在任何一个关系数据库系统中,第一范式都是一个最起码的要求。

第二范式:

:::tip 定义

R 是 1NF。而且每一个非键属性都完全函数依赖于 R 的候选码,则 R 称为第二范式关系模式,记作 2NF。

:::

第三范式:

:::tip 定义

R 是 2NF, 而且它的任何一个非键属性都不传递地依赖于任何候选码,则 R 称为第三范式关系模式,记作 3NF。

:::

将一个 2NF 关系分解为多个 3NF 的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。

BC 范式:

:::tip 定义

设关系模式 R 是 1NF。如果对于 R 的每个函数依赖 XY,则 X 必为候选码,则 R 是 BCNF 范式。

:::

如果一个关系数据库中的所有关系模式都属于 BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。

一旦数据已加载,不再进行插入、删除和更新的静态关系只需具有第一范式,否则称为动态范式,应该具有第三范式

规范化

基本步骤:

关系模式的分解

关系模式的分解必须满足:

将一个关系模式 R<U,F> 分解为若干个关系模式 R1<U1,F1>,R2<U2,F2>,,Rn<Un,Fn>(其中 U=U1U2Un,且不存在 UiUjFiFUi 上的投影),若 RR1,R2,,Rn 自然连接的结果相等,则称关系模式 R 的这个分解具有无损连接性

无损连接性的判定

判断无损连接性,用表格法:

用这个例子:R<UF>U={A,B,C,D,E}F={ABC,CD,DE}R 的一个分解为 R1(A,B,C)R2(C,D)R3(D,E)

  1. 构造初始表。第一行是所有属性,第一列是所有模式的属性集合。若属性属于模式中的属性,则填 aj,否则填 bij

    A B C D E
    ABC a1 a2 a3 b14 b15
    CD b21 b22 a3 a4 b25
    DE b31 b32 b33 a4 a5
  2. 对于 F 的每一个左部,看它在表中这一列有无相同的分量,如果有,就把右部对应的位置改为 aj

    A B C D E
    ABC a1 a2 a3 a4 a5
    CD b21 b22 a3 a4 a5
    DE b31 b32 b33 a4 a5
  3. 观察判定表,是否有一行全为 a,若是则得出分解具有无损连接性

如果分解为两个子模式,可以用如下定理简单判定无损连接性:

:::info 定理

ρ=R1,R2 是关系模式 R 的一个分解,U1,U2,U 分别是 R1,R2,R 的属性集合,FR 的函数依赖集合。ρ 具有无损连接性的充分必要条件是:U1U2U1U2F+U1U2U2U1F+

:::

保持函数依赖性的判定

F 所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖 Fi 所逻辑蕴含,则称关系模式 R 的这个分解是保持函数依赖的

分解算法

3NF 分解算法 1(达到 3NF 且保持函数依赖的分解)

3NF 分解算法 2(达到 3NF 且具有无损连接和保持函数依赖的分解)

关系模式优化

关系模式的优化是根据需求分析和概念设计中定义的事务的特点,对初始关系进行分解,提高数据操作的效率和存储空间的利用率。

性能估计

使用逻辑记录存取数、信息传输量和存储空间占用量等三个测度来估计逻辑数据库的性能