第5章 关系数据库规范化理论
- 格式:doc
- 大小:35.50 KB
- 文档页数:3
关系数据库的规范化理论与数据库设计在当今数字化的时代,数据成为了企业和组织的重要资产,而关系数据库作为存储和管理数据的重要手段,其设计的合理性直接影响着数据的质量、完整性和可用性。
关系数据库的规范化理论是指导数据库设计的重要原则,它能够帮助我们避免数据冗余、更新异常等问题,从而提高数据库的性能和可靠性。
首先,我们来了解一下关系数据库的基本概念。
关系数据库是由一组二维表组成的,每张表都有一个唯一的表名,表中的每一行称为一个元组,代表一个实体;每一列称为一个属性,代表实体的一个特征。
通过在不同的表之间建立关联,我们可以实现数据的查询和操作。
那么,什么是规范化理论呢?规范化理论是一种用于设计关系数据库的方法和原则,其目的是通过对关系模式进行分解和优化,消除数据冗余和更新异常,确保数据的一致性和完整性。
规范化理论主要包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
第一范式要求表中的每个属性都是不可再分的原子值。
例如,如果有一个“联系人信息”表,其中包含“地址”这个属性,如果地址又分为“省”“市”“区”“详细地址”等子属性,那么就不满足第一范式,需要将其拆分成多个属性。
第二范式要求在满足第一范式的基础上,每个非主属性都完全依赖于主键。
举个例子,如果有一个“订单”表,主键是“订单号”,而“客户姓名”和“客户地址”等非主属性只依赖于“客户编号”,而不是“订单号”,那么就不满足第二范式,需要将其拆分成两个表,一个是“订单”表,一个是“客户”表。
第三范式要求在满足第二范式的基础上,每个非主属性都不传递依赖于主键。
比如说,有一个“员工”表,主键是“员工编号”,“部门名称”依赖于“部门编号”,而“部门编号”又依赖于“员工编号”,这就不满足第三范式,需要将“部门名称”这个属性移到“部门”表中。
规范化理论在数据库设计中具有重要的意义。
通过规范化设计,可以减少数据冗余,节省存储空间。
想象一下,如果一个客户的信息在多个表中重复存储,不仅浪费空间,而且当客户信息发生变化时,需要在多个地方进行更新,容易导致数据不一致。
第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)。
由该关系的部分数据(如表4-1所示),我们不难看出,该关系存在着如下问题:1. 数据冗余(Data Redundancy)●每一个系名对该系的学生人数乘以每个学生选修的课程门数重复存储。
第四章关系数据库规范化理论一个关系数据库模式由一组关系模式组成,一个关系模式由一组属性名组成。
关系数据库设计,就是如何把已给定的相互关联的一组属性名分组,并把每一组属性名组成关系的问题。
然而,属性的分组不是唯一的,不同的分组对应着不同的数据库应用系统,它们的效率往往相差很远。
为了使数据库设计合理可靠,简单实用,长期以来,形成了关系数据库设计的理论——规范化理论。
4.1 关系规范化的作用规范化,就是用形式更为简洁,结构更加规范的关系模式取代原有关系模式的过程。
如果将两个或两个以上实体的数据存放在一个表里,就会出现下列三个问题: 数据冗余度大插入异常删除异常所谓数据冗余,就是相同数据在数据库中多次重复存放的现象。
数据冗余不仅会浪费存储空间,而且可能造成数据的不一致性。
插入异常是指,当在不规范的数据表中插入数据时,由于实体完整性约束要求主码不能为空的限制,而使有用数据无法插入的情况。
删除异常是指,当不规范的数据表中某条需要删除的元组中包含有一部分有用数据时,就会出现删除困难。
(以P98工资表为例)解决上述三个问题的方法,就是将不规范的关系分解成为多个关系,使得每个关系中只包含一个实体的数据。
(讲例子解)当然,改进后的关系模式也存在另一问题,当查询职工工资时需要将两个关系连接后方能查询,而关系连接的代价也是很大的。
那么,什么样的关系需要分解?分解关系模式的理论依据又是什么?分解完后能否完全消除上述三个问题?回答这些问题需要理论指导。
下面,将加以讨论:4.2 函数依赖实体间的联系有两类:一类是实体与实体之间联系;另一类是实体内部各属性间的联系。
数据库建模一章中讨论的是前一类,在这里我们将学习第二类。
和第一类一样,实体内部各属性间的联系也分为1:1、1:n和m:n三类:例:职工(职工号,姓名,身份证号码,职称,部门)1、一对一关系(1:1)设X、Y是关系R的两个属性(集)。
如果对于X中的任一具体值,Y中至多有一个值与之对应,反之,对于Y中的任一具体值,X中也至多有一个值与之对应,则称X、Y两属性间是一对一关系。
关系数据库规范化理论在当今数字化的时代,数据的管理和处理变得至关重要。
关系数据库作为一种广泛应用的数据存储和管理方式,其规范化理论是确保数据库设计的合理性、有效性和可靠性的重要基石。
那么,什么是关系数据库规范化理论呢?简单来说,它是一套用于设计关系数据库的原则和方法,旨在减少数据冗余、避免数据不一致性,并提高数据的完整性和存储效率。
让我们先从数据冗余这个问题说起。
想象一下,如果在一个数据库中,相同的信息被多次重复存储,这不仅会浪费存储空间,还可能导致数据更新时出现不一致的情况。
比如说,在一个学生管理系统中,如果学生的基本信息(如姓名、性别、出生日期等)在多个表中都有重复记录,当需要修改某个学生的信息时,就很容易出现有的地方改了,有的地方没改的混乱局面。
为了解决这个问题,规范化理论提出了一系列的范式,从第一范式(1NF)到第五范式(5NF),逐步提高数据库设计的质量。
第一范式要求数据表中的每个字段都应该是不可再分的原子值。
举个例子,如果有一个“地址”字段,包含了“省份、城市、区县、街道”等信息,这就不符合 1NF,应该将其拆分成多个字段,分别存储每个具体的部分。
第二范式则是在满足 1NF 的基础上,要求非主属性完全依赖于主键。
比如说,在一个订单表中,如果“订单号”是主键,而“商品名称”和“商品价格”等信息不完全依赖于“订单号”,而是还依赖于“商品编号”,那么就不符合 2NF,可能会导致数据冗余和更新异常。
第三范式进一步要求非主属性之间不存在传递依赖于主键的关系。
比如,在一个员工表中,如果“员工编号”是主键,“部门编号”依赖于“员工编号”,而“部门地址”又依赖于“部门编号”,这就存在传递依赖,不符合 3NF。
随着数据库设计的复杂度增加,还有更高阶的范式,如巴斯范式(BCNF)、第四范式(4NF)和第五范式(5NF),但在实际应用中,通常达到第三范式就能够满足大多数的需求。
规范化理论的好处是显而易见的。
第五章 关系数据理论一、 单项选择题1、设计性能较优的关系模式称为规范化,规范化主要的理论依据是 ( )A 、关系规范化理论B 、关系运算理论C 、关系代数理论D 、数理逻辑2、关系数据库规范化是为解决关系数据库中( )问题而引入的。
A 、插入、删除和数据冗余B 、提高查询速度C 、减少数据操作的复杂性D 、保证数据的安全性和完整性3、当关系模式R (A ,B )已属于3NF ,下列说法中( )是正确的。
A 、它一定消除了插入和删除异常B 、一定属于BCNFC 、仍存在一定的插入和删除异常D 、A 和C 都是4、在关系DB 中,任何二元关系模式的最高范式必定是( )A 、1NFB 、2NFC 、3NFD 、BCNF5、当B 属性函数依赖于A 属性时,属性A 与B 的联系是( )A 、1对多B 、多对1C 、多对多D 、以上都不是6、在关系模式中,如果属性A 和B 存在1对1的联系,则说( )A 、A B B 、B A C 、A B D 、以上都不是7、关系模式中,满足2NF 的模式,( )A 、可能是1NFB 、必定是1NFC 、必定是3NFD 、必定是BCNF8、关系模式R 中的属性全部是主属性,则R 的最高范式必定是( )A 、2NFB 、3NFC 、BCNFD 、4NF9、关系模式的候选关键字可以有( c ),主关键字有( 1个 )A 、0个B 、1个C 、1个或多个D 、多个10、如果关系模式R 是BCNF 范式,那么下列说法不正确的是( )。
A 、R 必是3NFB 、R 必是1NFC 、R 必是2NFD 、R 必是4NF11、图4.5中给定关系R ( )。
A 、不是3NFB 、是3NF 但不是2NFC 、是3NF 但不是BCNFD 、是BCNF12、设有如图4.6所示的关系R ,它是( )A 、1NFB 、2NFC 、3NFD 、4NF二、 填空题1、如果模式是BCNF ,则模式R 必定是(3NF ),反之,则( 不一定 )成立。
第5章关系数据库规范化理论
1. 理解并给出下列术语的定义:函数依赖、部分函数依赖、完全函数依赖、传
递依赖、超键、候选键、主键、外键、全键、1NF、2NF、3NF、BCNF、多值依赖、4NF、连接依赖、5NF。
2. 设关系模式R有n个属性,在模式R上可能成立的函数依赖有多少个?其中
平凡的函数依赖有多少个?非平凡函数依赖有多少个?
3. 设有关系模式R(ABCD),F是R上成立的函数依赖之集,F={AB→CD,A→D}。
(1) 说明R不是2NF模式的理由。
(2) 将R分解成2NF模式集。
4. 设有关系模式R(ABC),F是R上成立的函数依赖之集,F={C→B,B→A}。
(1) 说明R不是3NF模式的理由。
(2) 将R分解成3NF模式集。
5. 设有关系模式:
R(职工名,项目名,工资,部门名,部门经理)。
如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一名经理。
(1) 写出关系模式R的函数依赖集合与关键码。
(2) 说明R不是2NF模式的理由,并把R分解成2NF模式集。
(3) 进而把R分解为3NF模式集,并说明理由。
6.现在要建立关于系、学生、班级、学会诸信息的一个关系数据库。
语义为:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区,每个学生可参加若干学会,每个学会有若干学生。
描述学生的属性有:学号、姓名、出生日期、系名、班号、宿舍区;
描述班级的属性有:班号、专业名、系名、人数、入校年份;
描述系的属性有:系名、系号、系办地点、人数;
描述学会的属性有:学会名、成立年份、地点、人数、学生参加某回有一个入会年份。
1)请写出关系模式。
2)写出每个关系模式的最小函数依赖集,指出是否存在传递依赖。
在函数依赖左部是多属性的情况下,讨论函数依赖是完全依赖,还是部分函数依赖。
3)指出各个关系模式的侯选关键字、外部关键字,以及有没有全关键字.
7.设关系模式R(A,B,C,D,E,F),函数依赖集F={A→C,C→A,B→AC,D→AC,BD→A}.
1)求出R的侯选码。
2)求出F的最小函数依赖集。
3)将R分解为3NF,使其既具有无损连接性又具有函数依赖保持性。
8.设关系模式R〈A,B,C,D,E,F〉,函数依赖集F={AB→E,AC→F,AD→B,B→C,C→D}。
1)证明AB、AC、AD均是候选关键字。
2)证明主属性C部分依赖于关键字AB,传递依赖于AD。
同时证明主属性D 部分依赖于关键字AC,传递依赖于关键字AB。
9.设关系模式R〈A,B,C,D,E,F〉,函数依赖集F={AB→E,BC→D,BE→C,CD→B,CE→AF,CF→BD,C→A,D→EF},求F的最小函数依赖集。
10.判断下面的关系模式是不是BCNF,为什么?
1)任何一个二元关系。
2)关系模式选课(学号,课程号,成绩),函数依赖集F={(学号,课程号)→成绩}。
3)关系模式R(A,B,C,D,E,F),函数依赖集F={A→B,C→F,E→A,CE→A},将R分解为p={ABE,CDEF}。
判断p是否是无损连接。
11.设关系模式R{B,O,I,S,Q,D},函数依赖集F={S→D,I→S,IS→Q,B →Q}。
1)找出R的主码。
2)把R分解为BCNF,且具有无损连接性。
12.设有关系模式R(A,B,C),数据依赖集F={AB→C,C→→A},R属于第几范式?为什么?
13.设有关系模式R(A,B,C,D),数据依赖集F={A→B,B→A,AC→D,BC →D,
AD→C,BD→C,A→→CD,B→→CD}。
1)求R的主码。
2)R是否为第四范式?为什么?
3)R是不是BCNF?为什么?
4)R是不是3NF?为什么?
14.下述结论中哪些是正确的?哪些是不正确的?正确的就说明理由,不正确的请举出反例。
(1) 任何一个二元关系模式都属于3NF模式。
(2) 任何一个二元关系模式都属于BCNF模式。
(3) 任何一个二元关系模式都属于4NF模式。
(4) 任何一个二元关系模式都属于5NF模式。
(5) 在R(ABC)中,如果有A→B和B→C,则就有A→C。
(6) 在R(ABC)中,如果有A→B和A→C,则就有A→BC。
(7) 在R(ABC)中,如果有B→A和C→A,则就有BC→A。
(8) 在R(ABC)中,如果有BC→A,则有B→A和C→A。