关系模式的规范化理论模板
- 格式:doc
- 大小:181.00 KB
- 文档页数:22
5第五章第4讲关系模式的规范化关系模式的规范化是数据库设计中的一个重要概念,它通过一系列规则和规范化原则,使得关系模式能够更加合理、高效地组织和管理数据。
规范化的目的是消除冗余和数据依赖,以避免数据异常和不一致的情况发生。
本文将介绍关系模式规范化的基本概念、规则和原则,并讨论规范化的实际应用。
关系模式规范化的基本概念是:在关系数据库中,每个关系模式都应该经过规范化,以达到最佳的数据结构和数据组织方式。
规范化是一个多阶段的过程,每个阶段都有特定的规则和原则。
第一范式(1NF)是最基本的规范化原则。
它要求每个关系模式的属性都是原子性的,即不可再分的。
这意味着属性的值不可以是集合、数组或多值的。
如果一个属性的值可以被分解为更小的数据项,则需要拆分为多个属性,使得每个属性都是原子的。
第二范式(2NF)要求在满足1NF的基础上,消除非主属性对码的部分函数依赖。
函数依赖指的是当一个属性的值确定之后,另一个属性的值也能确定。
如果一个属性只依赖于码中的一部分属性,而不是整个码,那么它就存在部分函数依赖,需要拆分为多个关系模式,以消除这种依赖。
第三范式(3NF)要求在满足2NF的基础上,消除非主属性对互相之间的传递依赖。
传递依赖指的是当一个属性的值确定之后,其他非主属性的值也能确定。
如果一个非主属性依赖于另一个非主属性,而不是直接依赖于码,那么它就存在传递依赖,需要拆分为多个关系模式,以消除这种依赖。
此外,还有更高级的规范化形式,如BCNF(巴斯-科德范式)和第四范式。
BCNF要求在满足3NF的基础上,消除所有非主属性对码的冗余依赖。
第四范式则要求在满足BCNF的基础上,消除多值依赖和联合依赖。
这些规范化原则和规则都是为了最大程度地消除数据冗余和依赖问题,并提高数据库的性能和数据完整性。
关系模式规范化在实际应用中有着广泛的应用。
首先,在数据库设计阶段就应该考虑规范化原则,选择合适的属性和关系模式,避免冗余和依赖问题。
第4章关系数据库规范化理论数据库设计的一个最基本的问题是怎样建立一个合理的数据库模式, 使数据库系统无论是在数据存储方面, 还是在数据操作方面都具有较好的性能。
什么样的模型是合理的模型, 什么样的模型是不合理的模型, 应该经过什么标准去鉴别和采取什么方法来改进, 这是在进行数据库设计之前必须明确的问题。
为使数据库设计合理可靠、简单实用, 长期以来, 形成了关系数据库设计理论, 即规范化理论。
它是根据现实世界存在的数据依赖而进行的关系模式的规范化处理, 从而得到一个合理的数据库设计效果。
本章首先说明关系规范化的作用, 接着引入函数依赖和范式等基本概念, 然后介绍关系模式等价性判定和模式分解的方法, 最后简要介绍两种数据依赖的概念。
4.1 关系规范化的作用4.1.1问题的提出从前面的有关章节可知, 关系是一张二维表, 它是涉及属性的笛卡尔积的一个子集。
从笛卡尔积中选取哪些元组构成该关系, 一般是由现实世界赋予该关系的元组语义来确定的。
元组语义实质上是一个n目谓词( n是属性集中属性的个数) 。
使该n目谓词为真的笛卡尔积中的元素( 或者说凡符合元组语义的元素) 的全体就构成了该关系。
但由上述关系所组成的数据库还存在某些问题。
为了说明的方便, 我们先看一个实例。
【例4.1】设有一个关于教学管理的关系模式R(U), 其中U由属性Sno、Sname、Ssex、Dname、Cname、Tname、Grade 组成的属性集合, 其中Sno的含义为学生学号, Sname为学生姓名, Ssex为学生性别, Dname为学生所在系别, Cname为学生所选的课程名称, Tname为任课教师姓名, Grade为学生选修该门课程的成绩。
若将这些信息设计成一个关系, 则关系模式为:教学( Sno, Sname, Ssex, Dname, Cname, Tname, Grade) 选定此关系的主键为( Sno,Cname) 。
第6章关系模式的规范化理论关系数据库的规范化设计是指面对一个现实问题, 如何选择一个比较好的关系模式集合。
规范化设计理论对关系数据库结构的设计起着重要的作用。
关系模型有严格的数学理论基础, 因此人们就以关系模型为作为讨论对象, 形成了数据库逻辑设计的一个有力工具――关系数据库的规范化理论。
本章内容( 1) 关系模式的冗余和异常问题。
( 2) FD的定义、逻辑蕴涵、闭包、推理规则、与关键码的联系; 平凡的FD; 属性集的闭包; 推理规则的正确性和完备性; FD集的等价; 最小依赖集。
( 3) 无损分解的定义、性质、测试; 保持依赖集的分解。
( 4) 关系模式的范式: 1NF, 2NF, 3NF, BCNF。
分解成2NF、3NF 模式集的算法。
( 5) MVD、4NF、5NF的定义。
一, 关系模式设计中的问题1.什么是好的数据库构建好的, 合适的数据库模式, 是数据库设计的基本问题a) 体现客观世界的信息b) 无过度的冗余c) 无插入异常d) 无删除异常e) 无更新复杂如书上的S_C_G关系。
假设需要设计一个学生学习情况数据库StuDB。
下面我们以模式S_C_G( Sno, Sname, Dname, Age, Cno, Cname, Score, Pre_cno) 为例来说明该模式存在的问题。
下表是其一个实例。
3冗余度大: 每选一门课, 她本人信息和有关课程信息都要重复一次。
4插入异常: 插入一门课, 若没学生选修, 则不能把该课程插入表中。
5删除异常: 如S11号学生的删除, 有一门只有她选, 会造成课程的丢失。
6更新复杂: 更新一个人的信息, 则要同时更新很多条记录。
还有更新选修课时也存在这样的情况。
2.异常的原因:数据信赖的约束3.解决方法:数据库设计的规范化: 分解, 每个相正确独立, 依赖关系比较单纯, 如分解为3NF我们采用分解的方法, 将上述S_C_G分解成以下三个模式:S( Sno, Sname, age, Dname)C( Cno, Cname, Pre_cno)S_C( Sno, Cno, Score)4.规范化设计理论包括三个内容:i> 数据信赖---- 核心, 研究数据之间的联系ii> 范式---- 关系模式的标准iii> 模式设计方法---- 自动化设计的基础二, 函数依赖( Functional Dependency, FD)1. 函数依赖的定义: ( 还有非函数的依赖? , 什么是函数? 给出一个值能唯一确定另外一个值? 映射: 一对一, 多对一, 一对多?)定义: 函数依赖是指一个或一组属性能够( 唯一) 决定其它属性的值。
数学的语言:设有关系模式R(U), 其中U={A1, A2, …, A n}是关系的属性全集, X、Y是U的属性子集, 设t和u是关系R上的任意两个元组, 如果t和u在X的投影t[X]=u[X]推出t[Y]=u[Y], 即: t[X]=u[X] => t[Y]=u[Y],则称X函数决定Y, 或Y函数依赖于X。
记为X→Y。
在上述的关系模式S( Sno, Sname, age, Dname) 中, 存在以下函数依赖:Sno→ageSno→Dname...( Sno,Cno) →Score...2. 几种类型的函数依赖定义6.2( 非平凡函数依赖、 平凡函数依赖) : 一个函数依赖X →Y 如果满足Y ⊈X, 则称此函数依赖为非平凡函数依赖, 否则称之为平凡函数依赖。
例如X →Φ, X →X , XZ →X 等都是平凡函数依赖。
定义6.3( 完全函数依赖、 部分函数依赖) : 设X 、 Y 是关系R 的不同属性集, 若X →Y ( Y 函数依赖于X) , 且不存在X’ ⊂X , 使X’→Y , 则称Y 完全函数依赖于X, 记为Y X f −→−; (即不存在真子集依然是函数依赖关系的函数依赖是完全函数依赖)。
否则则称Y 部分函数依赖于X, 记为Y X p −→−。
例如, 在上例关系S 中, Dname f −→−Sno 是完全函数依赖; Dname p −→−Snam e)(Sno, 、 Dname p −→−age)(Sno, 是部分函数依赖。
在属性Y 与X 之间, 除了完全函数依赖和部分函数依赖关系等直接函数依赖, 还存在间接函数依赖关系。
如果在关系S 中增加系的电话号码Dtel, 从而有Sno →Dname, Dname →Dtel, 于是Sno →Dtel 。
在这个函数依赖中, Dtel 并不直接依赖于Sno, 是经过中间属性Dname 间接依赖于Sno 。
这就是传递函数依赖。
定义6.4( 传递函数依赖) : 设X 、 Y 、 Z 是关系模式R (U)中的不同的属性集, 如果X →Y , Y →X, Y →Z, 则称Z 传递依赖于X 。
否则,称为非传递函数依赖。
举例说明:定义6.5 关键字( Key, 候选键) : 在关系模式R(U)中, 若K⊆U, 且满足U−, 则称K为R的关键字。
K f−→一个包含了关键字的属性集合也能够函数决定( 但不是完全函数决定, 而是部分决定) 属性全集, 我们把这种包含了关键字的属性集合称为超关键字(Super Key)。
例如, 在上例的S( Sno, Sname, Dname, Age) 、C( Cno,Cname,Pre_cno) 、S_C( Sno, Cno, Score) 三个关系模式中, 存在以下关键字:SnameSnoSno f−→−Dname(Age,),,CnoCnameCno f−→e−,)(con_Pr,)(,−scoreCnoSno f−→因此, Sno、Cno和( Sno, Cno) 分别是关系模式S、C和S_C的关键字。
SnameDnameSno−(AgeSnameSno p−→,,,))(,DnameSnoSnameSno p−→(Age−Dname(,),,),因此, (Sno, Sname)和(Sno, Dname)都不是关键字, 而是超关键字。
3 函数依赖的公理系统(1) 函数依赖的逻辑蕴涵例如 在上述的传递函数依赖中, 由X →Y , Y →Z, 推导出X →Z, 这能够表示为:{X →Y , Y →Z }⊨ X →Z 其中: ⊨表示逻辑蕴涵。
一般地, 函数依赖的逻辑蕴涵定义如下:定义6.6( 逻辑蕴涵) : 设F 是由关系模式R(U)满足的一个函数依赖集, X →Y 是R 的一个函数依赖, 且不包含在F, 如果满足F 中所有函数依赖的任一具体关系r, 也满足X →Y , 则称函数依赖集F 逻辑地蕴涵函数依赖X →Y , 或称X →Y 可从F 推出。
可表示为: F ⊨X →Y 例: Sno →Dname, Dname →Dtel, 则: Sno →DtelF X →Y函数依赖集F 的闭包F+定义6.7: 函数依赖集F 所逻辑蕴涵的函数依赖的全体称为为F 的闭包( Closure) , 记为F +, 即F +={X →Y |F ⊨X →Y }例如, 有关系R( X, Y , Z) , 它的函数依赖集F ={X →Y , Y →Z }, 则其闭包F +为:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→=+YZ YZ XYZ XYZ XYZ XZ XYZ XY XYZX Z YZ YZ XYZ YZ XZ YZ XY YZ X Y YZ XZ XYZ XZ XZ XZ XY XZX YZ XY XYZ XY XZ XY XY XY X YZ Y Z XYZ Z XZ Z XY Z X Z Y Y XYZ Y XZ Y XY Y X Z Z Y Y X XYZ X XZ X XY X X Z Y XYZ XZ XY X F φφφφφφφφφ (2) Armstrong 公理系统1) 独立推理规则即下面给出的Armstrong公理的三条推理规则是彼此独立的。
A1: 自反律(Reflexivity)如果Y⊆X, 则X→Y成立, 这是一个平凡函数依赖。
根据A1能够推出X→Ф、U→X等平凡函数依赖( 因为Ф⊆X⊆U) 、XY→X。
A2: 增广律(Augmentation)如果X→Y, 且Z⊆W, 则XW→YZ成立。
根据A2能够推出XW→Y、XZ→YZ或XW→YW、X→XY、XY →X等。
A3: 传递律(Transitivity)如果X→Y且Y→Z, 则X→Z成立其它推理规则推论1: 合并规则(The Union Rule){X→Y, X→Z}⊨X→YZ推论2: 分解规则(The Decomposition Rule)如果X→Y, Z ⊆Y, 则X→Z成立; ( X→YZ) , X→Y, X→Z 推论3: 伪传递规则(The Pseudo Transitivity Rule){X→Y, WY→Z}⊨XW→Z证: ( 1) X→Y⊨X→XY( A2增广律)X→Z⊨XY→YZ( A2增广律)由上可得X→YZ( A3传递律)( 2) Z⊆Y⊨Y→Z( A1自反律)X→Y( 给定条件)。