第六章 关系模式规范化理论
- 格式:doc
- 大小:187.50 KB
- 文档页数:19
第六章关系的规范化设计第六章关系的规范化设计第一节问题的提出第二节函数依赖第三节范式第四节数据依赖的公理系统第一节关系模式设计问题的提出如何设计一个合理的关系数据库模式?c3c2c1c3c1cno 77OS丁惠s283DS 丁惠s290DB 丁惠s287OS 李立s178DB 李立s1gradecname sname sno 泛关系模式泛关系:泛关系模式中存在的问题c3c2c1c3c1cno 77OS丁惠s283DS 丁惠s290DB 丁惠s287OS 李立s178DB 李立s1gradecname sname sno反映现实世界操作性能例:设计教学管理关系数据库模型sc问题分析Sno Cno Tno Sname Grade Cname Tname S1C1T1赵民90OS彭S1C2T2赵民90DS杨S1C3T3赵民85C++刘S1C4T4赵民87DB张S2C1T4李军90OS张S3C1T4陈江75OS张S3C2T2陈江70DS杨S3C4T4陈江56DB张S4C1T1魏致90OS彭S4C2T2魏致85DS杨S5C1T1乔远95OS彭S5C4T4乔远80DB张关系SCT产生问题的原因?解:sct(sno, cno, tno, sname, grade, cname, tname)属性间约束关系(即数据间的依赖关系)太强解一:(sno,(cno,tno,(tno,cno, tname (sno,cno,解二:(sno,(cno,(tno, tname (sno,cno,(tno,cno)分解关系解决问题的方法:例sc解(sno, cno, tno, sname, grade, cname, tnameS n o S n a m e S 1赵民S 2李军S 3陈江S 4魏致S 5乔远StudentsCno Cname C1OS C2DS C3C++C4DBCoursesSnoCno Grade S1C190S1C290S1C385S1C487S2C190S3C175S3C270S3C456S4C190S4C285S5C195S5C480scTno Tname T1 彭 T2 杨 T3 刘 T4 张TeachersTeachCno Tno C1T1C1T4C2T2C3T3C4T4本章要解决的主要问题理想第二节:函数依赖数据依赖函数依赖(1)、函数依赖定义X 函数决定Y Y函数依赖于XX Y例:只能根据语义来确定函数依赖性的存在与否。
关系模式规范化
概要:本文介绍了关系模式规范化的概念,原则以及实施方式。
在任何形式的软件系统开发中,规范化都是非常重要的一环。
合理有效地维护数据库和关系数据结构,是各个数据库系统有效运行的必要前提。
本文探讨的主题就是关系模式规范化,以便为数据库系统的性能和功能提供更高的水平。
关系模式规范化意味着关系模式(也称为概念模型)中的实体及其属性之间存在一种规范性结构。
这种结构对定义概念模型中的实体之间的关系具有重要作用。
规范化的过程涉及将概念模型解构为基本结构的过程,其中各个实体的属性被抽象为子集。
利用此过程称为规范化,也就是将条件分解成较低的层次,以在实体之间建立一种标准的关系。
使用规范化的模型有许多优势,包括减少数据冗余、减少必要的输入及更新数据所需的多余步骤,简便化查询和保持数据准确性等等。
这些优势提供了处理庞大数据集资源的有效方法,确保数据可靠性和一致性以及减少维护成本和提高数据库效能。
有两类方法可以使用来实施关系模式规范化,简称两种规范。
第一种是第一范式,也就是1NF,它要求所有实体的属性均为原子的,也就是不可分解的。
此外,每个实体的属性不能有重复的值。
此外,实体之间必须存在关联关系。
第二种规范是第二范式,
必须要求具有唯一决定性的属性。
该范式要求在引用某些属性的情况下,数据库能够唯一决定实体的标识符,从而排除了任何重复记录。
最后,规范化有一定程度上降低了实现数据库系统效率和功能的难度。
只要运用规范化的原则,就可以使设计的关系模式更能够满足业务系统的需要,而不会有可能出现的错误。
关系模式规范化关系模式规范化是对数据库表的列进行规范化的重要技术。
它不仅能够提高数据库的可读性和安全性,还能够减少数据库查询时间,提高系统运行效率。
本文将详细介绍关系模式规范化的概念、原理和步骤,帮助读者更好地理解和应用这一重要技术。
关系模型规范化是一种将数据库表中的列规范化的过程,主要是为了降低表中冗余列的数量,以节省存储空间和减少数据冗余,并且符合一些基本的数据库设计的基本要求。
关系模式规范化由三个步骤构成:分解,标准化和继承。
首先,我们需要做的是分解数据库表,这就是所谓的“分解”。
将一个表中的列分解成多个表,每个表具有一组相关的列。
例如,我们可以将一个含有客户名字、地址和电话号码的表分解为两个表,一个表包含客户名字和地址,另一个表包含客户名字和电话号码。
而且,他们之间有一个“客户ID”的关联,以此实现表间的关联。
接下来,要对列进行标准化处理,这一步叫做“标准化”。
主要是为了消除表中多余的重复列,使每一列保持一致性。
比如,在一个表中,客户地址可以分为多个列,比如国家、省份、城市等,但这种方法会带来重复冗余,应当将这些地址信息合并成一列,以减少列的数量。
最后,要对列进行继承,这一步叫做“继承”。
即从一个表中继承数据,在另一个表中使用。
例如,如果一张表涉及客户的基本信息,另一张表涉及客户的订单信息,那么就可以在客户订单信息表中继承客户的基本信息,即客户的ID,而无需重复输入基本信息。
以上就是关系模式规范化的基本原理和步骤,它旨在通过规范化表的列,减少数据冗余,提高数据库的可读性和安全性,同时节省存储空间和查询时间。
如果读者们可以掌握关系模式规范化的知识点,就可以更好地实现数据库表列的规范化,从而提高数据库系统的安全性和性能。
第6章关系数据库规范化理论一个关系数据库模式由一组关系模式组成,一个关系模式由一组属性名组成。
关系数据库设计,就是如何把已给定的相互关联的一组属性名分组,并把每一组属性名组成关系的问题。
然而,属性的分组不是唯一的,不同的分组对应着不同的数据库应用系统,它们的效率往往相差很远。
为了使数据库设计合理可靠,简单实用,长期以来,形成了关系数据库设计的理论——规范化理论。
6.1 关系规范化的作用规范化,就是用形式更为简洁,结构更加规范的关系模式取代原有关系模式的过程。
如果将两个或两个以上实体的数据存放在一个表里,就会出现下列三个问题:➢数据冗余度大➢插入异常➢删除异常所谓数据冗余,就是相同数据在数据库中多次重复存放的现象。
数据冗余不仅会浪费存储空间,而且可能造成数据的不一致性。
插入异常是指,当在不规范的数据表中插入数据时,由于实体完整性约束要求主码不能为空的限制,而使有用数据无法插入的情况。
删除异常是指,当不规范的数据表中某条需要删除的元组中包含有一部分有用数据时,就会出现删除困难。
(以P98工资表为例)解决上述三个问题的方法,就是将不规范的关系分解成为多个关系,使得每个关系中只包含一个实体的数据。
(讲例子解)当然,改进后的关系模式也存在另一问题,当查询职工工资时需要将两个关系连接后方能查询,而关系连接的代价也是很大的。
那么,什么样的关系需要分解?分解关系模式的理论依据又是什么?分解完后能否完全消除上述三个问题?回答这些问题需要理论指导。
下面,将加以讨论:6.2 函数依赖6.2.1属性间关系实体间的联系有两类:一类是实体与实体之间联系;另一类是实体内部各属性间的联系。
数据库建模一章中讨论的是前一类,在这里我们将学习第二类。
和第一类一样,实体内部各属性间的联系也分为1:1、1:n和m:n三类:例:职工(职工号,姓名,身份证号码,职称,部门)1、一对一关系(1:1)设X、Y是关系R的两个属性(集)。
如果对于X中的任一具体值,Y中至多有一个值与之对应,反之,对于Y中的任一具体值,X中也至多有一个值与之对应,则称X、Y两属性间是一对一关系。
关系模式规范化关系模式规范化是指对数据库关系模式(如表)采用规范化的方法,使其更加结构化和可维护。
它的目的是减少存储重复的数据,提高效率,简化查询,以及提高安全性。
它包括一系列的操作,包括表拆分、冗余删除、粗粒度拆分和标准化。
二、规范化的优势1.少冗余数据:规范化会消除重复数据,减少存储空间,减少用于存储数据的磁盘空间。
2.高查询性能:规范化可以帮助查询更快找到所需要的数据,提高查询性能,提高查询效率。
3.高安全性:规范化可以减少存储数据的安全风险。
4.善数据结构:规范化会把表组织成有结构的形式,以便更容易访问和管理。
5.加数据一致性:规范化可以提高数据一致性,减少数据冗余,改善数据的准确性和可靠性。
三、如何规范化规范化的方法有很多,下面介绍一下几个常用的方法。
1.拆分:表拆分是把一个表拆分成多个小表,以减少冗余数据和简化查询,而无需减少存储空间。
2.余删除:冗余删除是指把不需要的重复数据从数据库中删除,以提高查询性能。
3.粒度拆分:粗粒度拆分是把一个表拆分成几个表,以提高存储空间利用率。
4.准化:标准化是把不同的表中的数据转化为一致的格式,以提高数据一致性。
四、关系模式规范化的注意事项1.范化不能改变数据库表结构,因此会影响SQL查询性能。
2.范化不能改变表中存储的数据,因此应该充分考虑是否需要规范化,以避免数据损坏。
3.规范化过程中,必须慎重考虑所有相关的查询,以避免查询效率的降低。
4.规范化完成后,应该定期对数据库进行检查,确保其正确性和可靠性。
五、结论关系模式规范化技术是一项重要的数据库技术,它可以帮助提高数据库的性能,简化查询,提高安全性,增加数据一致性,改善数据结构和数据存储空间。
然而,规范化也有一定的技术挑战和注意事项,如果不小心处理,很容易导致数据损坏和查询效率的降低。
因此,有必要加以详细的调查,确保在应用规范化技术之前,充分了解有关技术和实施方法,以避免技术上的失误。
关系模式的规范化理论掌握:函数依赖;关键字定义;关系模式的规范化(1NF-BCNF)。
理解:无损连接分解;Armstrong公理;多值依赖;4NF。
一、填空题1. 从关系规范化理论的角度讲,一个只满足1NF的关系可能存在的四方面问题是:数据冗余度大、修改异常、插入异常和_________。
2. 如果一个满足1NF关系的所有属性合起来组成一个关键字,则该关系最高满足的范式是______(在1NF、2NF、3NF范围内)。
3. 在函数依赖中,平凡的函数依赖根据Armstrong推理规则中的_______________律就可推出。
4. 关键字是__________决定关系的属性全集。
5. 在一个关系模式中,所有关键字中的属性构成一个集合,称为_______;6. 主属性集中的属性称为_____________,非主属性集中的属性称为____________。
7. 两个函数依赖集F和G等价的充分必要条件____________.二、选择题1. 下面关于函数依赖的叙述中,不正确的是( )A. 若X→Y,Y→Z,则X→YZB. 若XY→Z,则X→Z,Y→ZC. 若X→Y,Y→Z,则X→ZD. 若X→Y,Y'包含Y,则X—Y'2. 下面关于函数依赖的叙述中,不正确的是( )A. 若X→Y,X→Z,则X→YZB. 若XY→Z,则X→Z,Y→ZC. 若X→Y,WY→Z,则XW→ZD. 若X→Y,则XZ→YZ3. 设有关系模式R(A,B,C,D)和R上的函数依赖集FD={ A→B,B→C},则R的主码应是A. AB. BC. ADD. CD4. 关系模型中的关系模式至少是()A. 1NFB. 2NFC. 3NFD. BCNF5. 关系模式R中属性全部是主属性,则R的最高范式必定是()A. 2NFB. 3NF C.BCNF D.4NF6. 2NF如何规范为3NF()A. 消除非主属性对码的部分函数依赖B.消除非主属性对码的传递函数依赖C.消除主属性对码的部分和传递函数依赖 D. 消除非平凡且非函数依赖的多值依赖7. 设关系模式R (A,B,C),F是R上成立的FD集,F = {B→C},则分解ρ = {AB,BC}相对于F ()A. 是无损联接,也是保持FD的分解B. 是无损联接,但不保持FD的分解C. 不是无损联接,但保持FD分解D. 既不是无损联接,也不保持FD的分解8. 关系模式R分解成ρ = {R1,…,R k},F是R上的一个FD集,那么R中满足F的每一个关系r,与其投影联接表达式mρ(r)间的关系满足()A. r⊆ mρ(r)B. mρ(r) ⊆ rC. r = mρ(r)D. r≠mρ(r)三、名词释义,简要说明它们满足的FD条件。
第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 →age Sno →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−→−S name)(S no, 、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 f−→则称K为R的关键字。
一个包含了关键字的属性集合也能够函数决定(但不是完全函数决定,而是部分决定)属性全集,我们把这种包含了关键字的属性集合称为超关键字(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,)(,−scoreSno f−→Cno所以,Sno、Cno和(Sno,Cno)分别是关系模式S、C和S_C的关键字。
SnoSnameSname−(AgeSno p−→Dname,,),,()SnameDnameSnoSno 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 →Dtel F 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 +为:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→=+YZYZ 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 XZ X 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(给定条件)由上可得X→Z(A3传递律)(3)X→Y⊨WX→WY(A2增广律)WY→Z(给定条件)由上可得XW→Z(A3传递律)例6.2:设有关系模式R(A,B,C,D,E)及其上的函数依赖集F={AB→CD,A→B,D→E},求证F必蕴涵A→E。
证明:∵A→B (给定条件)∴A→AB (A2增广律)∵AB→CD (给定条件)∴A→CD (A3传递律)∴A→C,A→D (分解规则)∵D→E (给定条件)∴A→E (A3传递律)证毕。
一个重要定理定理6.1:若Ai(i=1,2,…,n)是关系模式R的属性,则X→(A1,A2,…,An)成立的充分必要条件是X→Ai均成立证明由分解和合并规则容易得到。
推论6.1 X是候选键的充分必要条件是X→每个属性Ai。
例:1. 现有如下关系模式:R(A#,B#,C,D,E) ,R上存在的FD有A#B#→E,B#→C,C→D ,求R的一个候选键。
解:A#B#→E, 得A#B#→A#B#E又B#→C, 得A#B#→A#B#CE又C→D, 得A#B#→A#B#CDE因此A#B#是候选键。
也可以这样做:先由B#→C 出发,得B#→B#CD, 还少一个A#, 再加一个A#即可,得A#B#→A#B#CDE2. 设有关系模式R (A,B,C,D),F是R上成立的FD集,F = {D→A,D→B},试写出关系模式R的候选键,并说明理由。
方法一因为:D→A,D→B (已知)得D→ABD→D,得D→ABD, 但D!→C而CD→C(A1自反律),我们有,CD→ABCD, 即CD→U因此,CD为候选键。
也可以这样做:方法二D→A,D→B (已知)D→D,但D!→C而CD→C(A1自反律),我们有,CD→A, CD→B, CD→C, CD→D, 由合并规则知:CD→ABCD因此,CD为候选键。
3. 关系模式R(A,B,C,D)的函数依赖集为F={AC→B},求R的候选键解:因为AC→B所以AC→ACB所以ACD→ABCD所以R的候选码是ACD4. 有关系模式R(A,B,C,D,E,F)其函数依赖集为F={E→D,C→B,CE→F,B→A},判断CE为候选键。