【转】数据依赖与关系模式规范化

前端之家收集整理的这篇文章主要介绍了【转】数据依赖与关系模式规范化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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 关系设计方法学概述

一、@H_404_9@ 何谓数据库的安全@H_404_9@
@H_404_9@
@H_404_9@ DB主要用于支持数据密集型应用(Data Intensive Applications) @H_404_9@
@H_404_9@ 数据密集型应用的核心问题是: DB设计 @H_404_9@
@H_404_9@ DB设计 ----结构方面:

目标 :设计一个“好的”(Good)关系模式。But,What is a good relational schema? @H_404_9@
@H_404_9@
二、@H_404_9@ “不好的”(Bad)关系模式:问题 & 原因@H_404_9@
@H_404_9@ 考察关系模式:R(SNO,CNO,G,TEACHER,DEPT),其一个实例是:
@H_404_9@ 问题 :@H_404_9@
@H_404_9@
@H_404_9@ 冗余(Redundancy): @H_404_9@
@H_404_9@ 重 复多次:“C01”课的教师是“张乐” ;“张乐”是“计算机”系的教师. @H_404_9@
@H_404_9@ 异常(Anomalies): @H_404_9@
@H_404_9@
@H_404_9@ 更新异常(Update Anomalies) :@H_404_9@
@H_404_9@ “张乐”调到“土木”系,而只改了其中一个元组的值,出现数据不一致。
“M03”课的教师换成“杨萍”, 而只改了其中一个元组的值,出现数据不一致。@H_404_9@
@H_404_9@ 删除异常(Delete Anomalies) :@H_404_9@
@H_404_9@ “C01”课不开了,需删除前三个元组,“张乐”是“计算机”系的教师的信息也随着被删除。@H_404_9@
@H_404_9@
@H_404_9@
@H_404_9@ 原因: @H_404_9@
@H_404_9@ 关系模式中数据的“语义”不单纯。
在此,“语义”专指问题空间中固有的、相对稳定的数据依赖 (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)
@H_404_9@
@H_404_9@
三、@H_404_9@ 如何设计“好的”关系模式:规范化,模式分解 & 范式@H_404_9@
@H_404_9@
@H_404_9@ 规范化(Normalization) : @H_404_9@
@H_404_9@ 将一个关系模式按“语义单纯化”的原则进行合理的分解----称模式分解(Decomposition) ,以最终达到
@H_404_9@
@H_404_9@ 模式分解的条件 / 准则 :@H_404_9@
@H_404_9@ 起码分解是无损的(Lossless) :分解前后要等价,即对任何相同的查询总是产生相同的结果。(可通过“连接”分解后的诸关系重构原关系)。
理想分解是保持依赖的(Preserving Dependencies) : 这需进一步论述。 @H_404_9@
@H_404_9@ 范式(Normal Form) : @H_404_9@
@H_404_9@ 规范化(即模式分解)程度的一种测度。

一个关系模式R达到x范式的程度称:R is in xNF,记为:R∈xNF;否则,称:R violates xNF condition,记为:R xNF。 @H_404_9@
@H_404_9@
四、@H_404_9@ 权衡:规范化 & 性能@H_404_9@
@H_404_9@
@H_404_9@ 规范化程度并非越高越好 : @H_404_9@
@H_404_9@ @H_404_9@
@H_404_9@ 程度 :@H_404_9@
@H_404_9@ 一般到BCNF/3NF已足够。 @H_404_9@
@H_404_9@ 策略 :@H_404_9@
@H_404_9@ @H_404_9@
@H_404_9@
(TOP )@H_404_9@
一、@H_404_9@ 函数依赖 @H_404_9@
@H_404_9@
[定义] @H_404_9@ 函数依赖 / 决定子(Determinant) @H_404_9@
@H_404_9@

@H_404_9@
@H_404_9@ 分裂/合并规则(The Splitting/Combining Rule) : @H_404_9@
@H_404_9@ @H_404_9@
[定义] @H_404_9@ 平凡依赖 / 非平凡依赖 / 完全非平凡依赖 @H_404_9@
@H_404_9@
@H_404_9@
@H_404_9@ 平凡依赖规则(The Trivial-dependency Rule) :@H_404_9@
@H_404_9@ @H_404_9@
[定义] @H_404_9@ 传递依赖 @H_404_9@
@H_404_9@
@H_404_9@
@H_404_9@ 传递规则(The Transitive Rule) :@H_404_9@
@H_404_9@ @H_404_9@
[定义] @H_404_9@ 完全依赖 / 部分依赖 @H_404_9@
@H_404_9@ @H_404_9@
@H_404_9@
二、@H_404_9@ 范式 @H_404_9@
@H_404_9@
[定义] @H_404_9@ 1NF @H_404_9@
@H_404_9@ 设有一个关系模式R,若R的任一关系实例r中的属性值均是原子数据,则称R属于1NF,记为R∈1NF。[注]
@H_404_9@ 1NF条件是传统关系数据库系统的基本要求,目前大多数RDBMS均要求如此。@H_404_9@
@H_404_9@ 突破这一条件称非第一范式(non-first normal form,NF2)条件。@H_404_9@
@H_404_9@ E/R中的非原子属性在转化为关系时要这样处理:对集合属性:纵向展开; 对元组属性:横向展开。@H_404_9@
@H_404_9@
[定义] @H_404_9@ 2NF @H_404_9@
@H_404_9@ 设有一个关系模式R∈1NF,若R的每个非主属性均完全函数依赖于键,则称R属于2NF,记为R∈2NF。[注]
@H_404_9@ @H_404_9@
@H_404_9@ @H_404_9@
@H_404_9@
[定义] @H_404_9@ 3NF @H_404_9@
@H_404_9@ 设有一个关系模式R∈1NF,
若R的任一非平凡函数依赖X A满足下列两个条件之一:
(1) X是超键, (2)A是主属性
则称R属于3NF,记为R∈3NF。[注]
@H_404_9@ @H_404_9@
@H_404_9@ @H_404_9@
@H_404_9@
[定义] @H_404_9@ BCNF @H_404_9@
@H_404_9@ 设有一个关系模式R∈1NF,
若R的任一非平凡函数依赖X A满足下列条件:
决定子X必是超键,
则称R属于BCNF,记为R∈BCNF。[注]
@H_404_9@ @H_404_9@
@H_404_9@ BCNF消除了(非主/主)属性对键的部分依赖和传递依赖。 @H_404_9@
@H_404_9@ 关系模式达到BCNF后,在函数依赖范畴内已彻底规范化了,并消除了冗余和异常。 @H_404_9@
@H_404_9@ 任何全键关系模式必属于BCNF。 @H_404_9@
@H_404_9@ @H_404_9@
@H_404_9@ 任何两属性关系模式必属于BCNF。 @H_404_9@
@H_404_9@ @H_404_9@
@H_404_9@ 关系模式无损分解成BCNF的策略(启发式算法) : @H_404_9@
@H_404_9@ @H_404_9@
[例] @H_404_9@ M(title,year,length,color,star,star-gender,star-add,studio,studio-add,studio-class) @H_404_9@
@H_404_9@ @H_404_9@
@H_404_9@
@H_404_9@
(TOP )@H_404_9@
待续
(TOP )@H_404_9@
[定义] @H_404_9@ 逻辑蕴涵 @H_404_9@
@H_404_9@
@H_404_9@
[定义] @H_404_9@ F的闭包(Closure)F+ @H_404_9@
@H_404_9@
@H_404_9@
@H_404_9@ Armstrom公理(Armstrong’s axioms): 三条基本推理规则 @H_404_9@
@H_404_9@
@H_404_9@
@H_404_9@ F+ 可由Armstrong公理从F导出。 @H_404_9@
[定义] @H_404_9@ 关系模式R的一个分解 / 关系r在Ui 上的投影 / 函数依赖集F在Ui 上的投影 @H_404_9@
@H_404_9@
@H_404_9@
[定义] @H_404_9@ 无损分解(lossless decomposition) @H_404_9@
@H_404_9@
@H_404_9@
[定义] @H_404_9@ 保持依赖分解(preserve-dependency decomposition) @H_404_9@
@H_404_9@
@H_404_9@
@H_404_9@ 分解的条件 / 准则: @H_404_9@
@H_404_9@
无损分解 ------起码 :决定能否分解;
保持依赖分解 ------理想 :决定分解的好坏。
@H_404_9@
@H_404_9@ 结论: @H_404_9@
@H_404_9@
总有将一个关系模式分解成3NF无损、且保持依赖 的分解。
总有将一个关系模式分解成BCNF (甚至4NF )的无损 的分解。
@H_404_9@
[附] @H_404_9@ Properties of Normal Forms and Their Decompositions: @H_404_9@
@H_404_9@

Source: J.D.Ullman,A First Course in Database Systems. Prentice Hall,1997. Page 164. @H_404_9@
@H_404_9@
[定理] @H_404_9@
Source: 萨师煊,数据库系统概论(第二版)。高教,1991。Page 178。 @H_404_9@
[定理] @H_404_9@
Source: 王能斌,数据库系统。电子工业,1995。Page 396。 @H_404_9@

猜你在找的设计模式相关文章