前端之家收集整理的这篇文章主要介绍了
【转】数据依赖与关系模式规范化,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
http://online.hhu.edu.cn/jpkc/POD/N3/%BD%B2%CA%DA%CC%E1%B8%D9/LO-C10-%CA%FD%BE%DD%D2%C0%C0%B5%D3%EB%B9%D8%CF%B5%C4%A3%CA%BD%B9%E6%B7%B6%BB%AF.htm
10.1 关系设计方法学概述
|
|
DB主要用于支持数据密集型应用(Data Intensive Applications) |
|
数据密集型应用的核心问题是: DB设计 |
|
DB设计 ----结构方面: 目标 :设计一个“好的”(Good)关系模式。But,What is a good relational schema? |
|
|
考察关系模式:R(SNO,CNO,G,TEACHER,DEPT),其一个实例是:
|
问题 : |
|
|
冗余(Redundancy): |
|
重 复多次:“C01”课的教师是“张乐” ;“张乐”是“计算机”系的教师. |
|
异常(Anomalies): |
|
|
更新异常(Update Anomalies) : |
|
“张乐”调到“土木”系,而只改了其中一个元组的值,出现数据不一致。 “M03”课的教师换成“杨萍”, 而只改了其中一个元组的值,出现数据不一致。 |
|
删除异常(Delete Anomalies) : |
|
“C01”课不开了,需删除前三个元组,“张乐”是“计算机”系的教师的信息也随着被删除。 |
|
|
|
原因: |
|
关系模式中数据的“语义”不单纯。 在此,“语义”专指问题空间中固有的、相对稳定的数据依赖 (DD)关系。 e.g. 函数依赖 (Functional Dependency,FD):一个/组属性X的值是否决定另一个/组属性Y的值。 多值函数依赖 (Multivalued Dependency,MVD); 连接依赖 (Join Dependency,JD)。 对以上模式R,有以下三个函数依赖: 1. SNO,CNO→G 2. CNO→T 3. T→DEPT 相应的表示了三个事实,为何不用三个模式呢? 1. R1(SNO,G) 2. R2(CNO,T) 3. R3(T,DEPT)
|
|
|
|
规范化(Normalization) : |
|
将一个关系模式按“语义单纯化”的原则进行合理的分解----称模式分解(Decomposition) ,以最终达到 |
|
模式分解的条件 / 准则 : |
|
― 起码 :分解是无损的(Lossless) :分解前后要等价,即对任何相同的查询总是产生相同的结果。(可通过“连接”分解后的诸关系重构原关系)。 ― 理想 :分解是保持依赖的(Preserving Dependencies) : 这需进一步论述。 |
|
范式(Normal Form) : |
|
规范化(即模式分解)程度的一种测度。 一个关系模式R达到x范式的程度称:R is in xNF,记为:R∈xNF;否则,称:R violates xNF condition,记为:R xNF。 |
|
|
Armstrom公理(Armstrong’s axioms): 三条基本推理规则 |
|
|
[定义] |
关系模式R的一个分解 / 关系r在Ui 上的投影 / 函数依赖集F在Ui 上的投影 |
|
|
[定义] |
无损分解(lossless decomposition) |
|
|
[定义] |
保持依赖分解(preserve-dependency decomposition) |
|
|
|
分解的条件 / 准则: |
|
无损分解 ------起码 :决定能否分解; 保持依赖分解 ------理想 :决定分解的好坏。
|
|
结论: |
|
总有将一个关系模式分解成3NF 的无损、且保持依赖 的分解。 总有将一个关系模式分解成BCNF (甚至4NF )的无损 的分解。
|
[附] |
Properties of Normal Forms and Their Decompositions: |
|
Source: J.D.Ullman,A First Course in Database Systems. Prentice Hall,1997. Page 164. |
|
[定理] |
Source: 萨师煊,数据库系统概论(第二版)。高教,1991。Page 178。 |
[定理] |
Source: 王能斌,数据库系统。电子工业,1995。Page 396。 |
原文链接:https://www.f2er.com/javaschema/287667.html