关系模式由五部分组成,是一个五元组:
R(U, D, DOM, F)
关系名R是符号化的元组语义
U为一组属性
D为属性组U中的属性所来自的域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。
例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立
3. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。
(1)多值依赖的有效性与属性集的范围有关
l若X→→Y在U上成立,则在W(XYÍ W Í U)上一定成立;反之则不然,即X→→Y在W(W Ì U)上成立,在U上并不一定成立。
l原因:多值依赖的定义中不仅涉及属性组X和Y,而且涉及U中其余属性Z。
多值依赖的有效性与属性集的范围有关:
一般地,在R(U)上若有X→→Y在W(W Ì U)上成立,则称X→→Y为R(U)的嵌入型多值依赖。
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
不允许有非平凡且非函数依赖的多值依赖。允许的非平凡多值依赖实际上是函数依赖
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化。
关系数据库的规范化理论是数据库逻辑设计的工具。
是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”。即采用“一事一地”的模式设计原则,让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。因此 规范化实质上是概念的单一化。
不能说规范化程度越高的关系模式就越好,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。上面的规范化步骤可以在其中任何一步终止。
设U为属性集总体,F是U上的一组函数依赖, 于是有关系模式R <U,F >。对R <U,F> 来说有以下的推理规则:
A1 自反律(reflexivity rule):若Y Í X Í U,则X →Y 为F所蕴涵。
A2 增广律(augmentation rule):若X→Y为F所蕴涵,且Z Í U,则XZ→YZ 为F所蕴涵。
A3 传递律(transitivity rule):若X→Y及Y→Z为F所蕴涵,则X→Z 为F所蕴涵。
注意:由自反律所得到的函数依赖均是平凡的函数依赖, 自反律的使用并不依赖于F。
根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:
合并规则(union rule):由X→Y,X→Z,有X→YZ。
伪传递规则(pseudo transitivity rule):由X→Y,WY→Z,有XW→Z。
分解规则(decomposition rule): 由X→Y及ZÍY,有X→Z。
有效性与完备性的含义:
有效性:由F 出发根据Armstrong公理推导出来的每一个函数依赖一定在F +中
完备性:F +中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来
如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集或最小覆盖。
(1)单属性化: F中任一函数依赖的右部仅含有一个属性。
(2)无冗余化: F中不存在这样的函数依赖X→A, 使得F与F-{X→A}等价。
(3)既约化: F中不存在这样的函数依赖X→A, X有真子集Z使得F-{X→A}∪{Z→A}与F等价。
⒈. 分解具有无损连接性
⒉. 分解要保持函数依赖
⒊. 分解既要保持函数依赖,又要具有无损连接性
关系模式R的一个分解 ρ={ R11,F1>,R22,F2>, …,Rn<Un,Fn>}
若R与R1、R2、…、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join)
具有无损连接性的分解保证不丢失信息,无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题
若要求分解具有无损连接性,那么模式分解一定能够达到4NF
若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF
若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够达到BCNF
规范化理论为数据库设计提供了理论的指南和工具,也仅仅是指南和工具
并不是规范化程度越高,模式就越好,必须结合应用环境和现实世界的具体情况合理地选择数据库模式