关系数据库规范化理论
12-15第7章_关系数据库规范化理论复习题

第7章 关系规范化理论一、单项选择题1.关系规范化中的删除操作异常是指.关系规范化中的删除操作异常是指 ①① ,插入操作异常是指,插入操作异常是指,插入操作异常是指 ②② 。
A A.不该删除的数据被删除.不该删除的数据被删除.不该删除的数据被删除 B B B.不该插入的数据被插入.不该插入的数据被插入.不该插入的数据被插入 C C.应该删除的数据未被删除.应该删除的数据未被删除.应该删除的数据未被删除 D D D.应该插入的数据未被插入.应该插入的数据未被插入.应该插入的数据未被插入 答案:①答案:①答案:①A A A ②②D2.设计性能较优的关系模式称为规范化,规范化主要的理论依据是.设计性能较优的关系模式称为规范化,规范化主要的理论依据是 。
A A..关系规范化理论 B B.关系运算理论.关系运算理论.关系运算理论 C C.关系代数理论.关系代数理论.关系代数理论 D D D.数理逻辑.数理逻辑.数理逻辑 答案:答案:答案:A A3.规范化理论是关系数据库进行逻辑设计的理论依据。
根据这个理论,关系数据库中的关系必须满足:其每一属性都是系必须满足:其每一属性都是 。
A A.互不相关的.互不相关的.互不相关的 B B B.不可分解的.不可分解的.不可分解的 C C.长度可变的.长度可变的.长度可变的 D D D.互相关联的.互相关联的.互相关联的 答案:答案:答案:B B4.关系数据库规范化是为解决关系数据库中.关系数据库规范化是为解决关系数据库中 问题而引入的。
问题而引入的。
问题而引入的。
A A.插入、删除和数据冗余.插入、删除和数据冗余.插入、删除和数据冗余 B B B.提高查询速度.提高查询速度.提高查询速度 C C.减少数据操作的复杂性.减少数据操作的复杂性.减少数据操作的复杂性 D D D.保证数据的安全性和完整性.保证数据的安全性和完整性.保证数据的安全性和完整性 答案:答案:答案:A A 5.规范化过程主要为克服数据库逻辑结构中的插入异常,删除异常以及删除异常以及 的缺陷。
第7章 关系数据库规范化理论

7.2.1 关系模式中的码
例:
关系模式S(Sno,Sdept,Sage),单个属性Sno是码
SC(Sno,Cno,Grade)中,(Sno,Cno)是码 关系模式R(P,W,A)
P:演奏者
W:作品
A:听众
一个演奏者可以演奏多个作品 某一作品可被多个演奏者演奏 听众可以欣赏不同演奏者的不同作品 码为(P,W,A),即All-Key
Sno→SName
Sno→Sdept
Sno→Sage
例:SC(Sno, Cno, Grade)
(Sno, Cno)→Grade
8
7.1.2 一些术语和符号
平凡函数依赖与非平凡函数依赖
在关系模式R(U)中,对于U的子集X和Y,
如果X→Y,但Y X,则称X→Y是非平凡的函数依赖
若X→Y,但Y X,
则称X→Y是平凡的函数依赖
例:在关系SC(Sno, Cno, Grade)中,
非平凡函数依赖: (Sno, Cno) → Grade 平凡函数依赖: (Sno, Cno) → Sno
(Sno, Cno) → Cno
如不作特别说明,总是讨论非平凡函数依赖。
9
7.1.2 一些术语和符号
若X→Y,则X称为这个函数依赖的决定属性
24
7.2.1 关系模式中的码
外部码:用于关系表之间建立关联的属性(组)。 关系模式 R 中属性或属性组X 并非 R的码,但 X
是另一个关系模式的码,则称 X 是R 的外部码,也 称外码。
如在SC(Sno,Cno,Grade)中,Sno不是码,
但Sno是关系模式S(Sno,Sdept,Sage)的码, 则Sno是关系模式SC的外部码
关系数据库规范化理论常见试题及答案

关系数据库规范化理论常见试题及答案1.关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么?答:关系规范化中的操作异常有插入异常、更新异常和删除异常,这些异常是由于关系中存在不好的函数依赖关系引起的.消除不良函数依赖的办法是进行模式分解,即将一个关系模式分解为多个关系模式。
2.第一范式、第二范式和第三范式的关系的定义是什么?答:不包含非原子项属性的关系就是第一范式的关系;对于第一范式的关系,如果此关系中的每个非主属性都完全函数依赖于主键,则此关系属于第二范式;对于第二范式的关系,如果所有的非主属性都不传递依赖于主键,则此关系就是第三范式的。
3.什么是部分依赖?什么是传递依赖?请举例说明。
答:部分依赖关系是指某个属性只由构成主键的部分列决定,而和另一些列无关。
例如对关系:学生选课(学号,姓名,课程号,成绩),此关系的主键是(学号,课程号),而“姓名”列只由“学号”决定,与“课程号”无关,这就是部分依赖关系。
传递依赖指的是某个非主键属性是由另一个非主键属性决定的,而这个非主键属性再由主键决定。
例如对关系:学生(学号、姓名、所在系,系主任),此关系的主键为(学号),而“系主任”由“所在系”决定,“所在系”又由“学号”决定,因此“系主任”对“学号”是传递依赖关系.4.第三范式的表是否一定不包含部分依赖关系?答:是的.5.对于主键只由一个属性组成的关系,如果它是第一范式关系,则它是否一定也是第二范式关系?答:是的。
因为如果一个关系的主键只由一个属性组成,则此关系中一定不会存在部分依赖关系。
6.设有关系模式:学生修课管理(学号,姓名,所在系,性别,课程号,课程名,学分,成绩).设一名学生可以选修多门课程,一门课程可以被多名学生选修。
一名学生有唯一的所在系,每门课程有唯一的课程名和学分。
请指出此关系模式的候选键,判断此关系模式是第几范式的;若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键.答:候选键为:(学号,课程号),它也是此关系模式的主键。
关系数据库的规范化理论与数据库设计

关系数据库的规范化理论与数据库设计在当今数字化的时代,数据成为了企业和组织的重要资产,而关系数据库作为存储和管理数据的重要手段,其设计的合理性直接影响着数据的质量、完整性和可用性。
关系数据库的规范化理论是指导数据库设计的重要原则,它能够帮助我们避免数据冗余、更新异常等问题,从而提高数据库的性能和可靠性。
首先,我们来了解一下关系数据库的基本概念。
关系数据库是由一组二维表组成的,每张表都有一个唯一的表名,表中的每一行称为一个元组,代表一个实体;每一列称为一个属性,代表实体的一个特征。
通过在不同的表之间建立关联,我们可以实现数据的查询和操作。
那么,什么是规范化理论呢?规范化理论是一种用于设计关系数据库的方法和原则,其目的是通过对关系模式进行分解和优化,消除数据冗余和更新异常,确保数据的一致性和完整性。
规范化理论主要包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
第一范式要求表中的每个属性都是不可再分的原子值。
例如,如果有一个“联系人信息”表,其中包含“地址”这个属性,如果地址又分为“省”“市”“区”“详细地址”等子属性,那么就不满足第一范式,需要将其拆分成多个属性。
第二范式要求在满足第一范式的基础上,每个非主属性都完全依赖于主键。
举个例子,如果有一个“订单”表,主键是“订单号”,而“客户姓名”和“客户地址”等非主属性只依赖于“客户编号”,而不是“订单号”,那么就不满足第二范式,需要将其拆分成两个表,一个是“订单”表,一个是“客户”表。
第三范式要求在满足第二范式的基础上,每个非主属性都不传递依赖于主键。
比如说,有一个“员工”表,主键是“员工编号”,“部门名称”依赖于“部门编号”,而“部门编号”又依赖于“员工编号”,这就不满足第三范式,需要将“部门名称”这个属性移到“部门”表中。
规范化理论在数据库设计中具有重要的意义。
通过规范化设计,可以减少数据冗余,节省存储空间。
想象一下,如果一个客户的信息在多个表中重复存储,不仅浪费空间,而且当客户信息发生变化时,需要在多个地方进行更新,容易导致数据不一致。
关系数据库规范化理论

规范化可以消除数据冗余,确保每个数据只在数据库中存储一次,从而提高数据的一致性。
第一范式 (1NF)
表结构
第一范式要求每个数据表都应具有原子性,即每 个表中的列不能再进一步分解。
主键
每个表必须具有一个唯一标识记录的主键,用于 保证数据的唯一性和关联性。
第二范式 (2NF)
1 函数依赖
数据表中出现函数依赖时,就需要进行第二范式的规范化。避免冗余数据。
关系数据库规范化理论
规范化是设计关系数据库中的一项重要理论,它能使数据存储结构更加合理、 高效。通过划分数据表,规范化能够消除数据冗余、提高数据一致性和查询 性能。
规范化定义
目的明确
规范化通过一定的规则将一个大的数据表拆分成多个小的数据表,以实现数据的高内聚和低 耦合。
数据准确性
规范化能确保数据的准确性,因为数据被划分为更小的范围,每个数据表只存储特定类型的 数据。
3 学生管理系统
拆分学生、课程、成绩等信息,确保学生信息的一致性和教务管理的高效性。
规范化的局限性及未来研究方向
局限性
规范化可能导致表结构复杂,加重查询和维护 的工作量。某些情况下,冗余数据可能是必要 的。
未Hale Waihona Puke 研究方向未来的研究可以探索如何在规范化的基础上平 衡数据一致性和查询性能,以及结合其他技术 实现更灵活的数据存储。
优点 数据一致性提高 数据冗余减少 数据更新更容易
缺点 可能会导致过度分解数据表,增加查询复杂性 可能引起频繁的表连接操作,影响查询性能 增加了设计和维护的复杂性
规范化的应用举例
1 在线购物系统
将用户、订单、商品等信息拆分为多个表,确保数据的一致性和查询效率。
关系数据库的规范化理论与数据库设计

.
13
几个术语和符号
如果 X→Y,则 X 叫做决定因素(Determinant) 如果 X→Y , Y → X ,则记作: X ←→ Y
如果Y不函数依赖于X,则记作: X→Y
.
14
二、平凡函数依赖与非平凡函数依赖 如果 X→Y,但 Y X,则称 X→Y 是非平凡的函数 依赖
关系模式的规范化:解决插入、删除和更 新异常,尽量消除数据冗余,消除不合适 的数据依赖
这就要求关系模式应该满足一定的条件
关系模式满足不同的条件,称为不同的范 式
.
30
1NF范式
如果关系模式R的所有属性都是不可再分解 的,则称R属于第一范式,简称1NF,记做 R∈1NF。
满足1NF的关系为规范化的关系,否则为非规 范化的关系
U,则【1】为F所逻辑蕴含
XZ->ZY 2008.09 3、下列关于部分函数依赖的叙述中,哪条是正确的? A、若X->Y,且存在Y的真子集Y’,X->Y’,则Y对X部分函数依赖 B、若X->Y,且存在Y的真子集Y’,X->Y’,则Y对X部分函数依赖 C、若X->Y,且存在X的真子集X’,X’->Y,则Y对X部分函数依赖 D、若X->Y,且存在X的真子集X’,X’->Y,则Y对X部分函数依赖
CNAME 机械设计 高等数学 管道工程 数据结构
.
6
该关系模式可能出现如下 问题:
异常(多个记录更新,刘宏
容易产生数据不一致) 王明
插入异常:TNAME,CNO码, 李红
某个教师没上课,CNO为
空,不能插入)
ADDRESS CNO 18栋302 043
21栋503 056 18栋302 041 17栋503 002
第03章 关系数据库规范化理论
项目3.2
3.2.3
3.2.3.3
关系模式的规范化
关系模式的规范化
第三范式(3NF)
若关系R∈2NF,且它的每个非主属性都不传递依赖于主码,则称R∈3NF。 显然,R21∈3NF,R22只存在一个非主属性,不可能存在传递函数依 赖,所以R2∈23NF。 3.2.3.4 关系规范化的步骤
关系规范化的步骤如 图3-4所示。
3.2.3.2 第二范式(2NF)
若关系R∈1NF,且它的每个非主属性都完全依赖于主码,则称R∈2NF。
很显然,如图3-2所示的R1、R2都属于2NF。将R分解为R1和R2以后,一定 程度上减轻了数据冗余和操作异常,但仍然存在着数据冗余和操作异常。
项目3.2
3.2.3
3.2.3.2
关系模式的规范化
函 数 依 赖
函数依赖的推理规则
完全函数依赖
设有关系R,x、y、z为R的一个属性集,则推理规则如下所述。
(1) 自反律:如果
y x ,则x→y。这是一个平凡函数依赖。
(2) 增广律:如果x→y,则xz→yz。 (3) 传递律:如果x→y、y→z,则x→z。 (4) 合并律:如果x→y、x→z,则x→yz。 (5) 分解律:如果x→yz,则x→y,x→z。
项目3.2
3.2.2 范式
关系模式的规范化
范式来自英文Normal Form,简称NF,指一个关系的非主属性函数依赖 于主码的程度。目前主要有6种范式:
第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。 满足最低要求的叫第一范式,简称为1NF; 在第一范式基础上进一步满足一些要求的为第二范式,简称为2NF; 以此类推,则各种范式之间存在如下联系:
二、填空题
数据库5版第七章规范化理论例题解答
关系数据库规范化理论例题解答⊄(⊆⊂∈∉)例:证明定理 Armstrong公理是正确的,即如果F成立,则由F根据Armstrong公理所推导的函数依赖总是成立的。
设有R(U,F),X、Y、Z均是U的子集,F是R的函数依赖集,推理规则如下:A1:自反律(reflexivity)如果Y ⊆X ⊆U,则X→Y为F所蕴涵。
A2:增广律(augmentation)如果X→Y为F所蕴涵,且Z⊆U,则XZ→YZ为F的所蕴涵。
(XZ代表X∪Z)A3:传递律(transitivity)如果X→Y和Y→Z为F所蕴涵,则X→Z为F的蕴涵。
证:设t1,t2是关系R中的任意两个元组。
A1:如果t1[X]=t2[X],则因Y X,有t1[Y]=t2[Y],故X→Y成立。
A2:如果t1[XZ]=t2[XZ],则有t1[X]=t2[X],t1[Z]=t2[Z]。
已知X→Y成立,因此可得t1[Y]=t2[Y],由上可知t1[YZ]=t2[YZ],故XZ→YZ成立。
A3:如果t1[X]=t2[X],则t1[Y]=t2[Y];如果t1[Y]=t2[Y],则t1[Z]=t2[Z]由上可得,如果t1[X]=t2[X],则t1[Z]=t2[Z],故X→Z成立。
例:证明定理根据三条推理规则得到下面三条推理规则是正确的。
(1) 合并规则由X→Y,X→Z,有X→YZ。
(2) 伪传递规则由X→Y,WY→Z,有XW→Z。
(3) 分解规则如果X→Y,且Z ⊆ Y,则X→Z成立。
证: (1) 如果X→Y,则X→XY (A2)如果X→Z,则XY→YZ (A2)由上可得X→YZ (A3)(2) 如果X→Y,则WX→WY (A2)WY→Z (已知条件)故得WX→Z (A3)(3) 如果Z⊆Y,则Y→Z (A1)X→Y (已知条件)故得X→Z (A3)例:证明定理 X→Y能由Armstrong公理推导出的充要条件是Y⊆X + F证:设Y={A1,A2,…,Ak},先证充分性:假定Y ⊆X +F,则根据X+F的定义,X→Ai(i=1,2,…,k)可由Armstrong公理导出,根据合并规则则有X→Y。
数据库课件第4章关系数据库(RDB)规范化设计理论
3. 完全函数依赖与部分函数依赖
完全函数依赖: 在关系模式R(U)中,如果X→Y,并且对于X的任何一 个真子集X′,都有X′ Y,则称Y完全函数依赖于X, 记作X f Y。 部分函数依赖: 若X→Y,但Y不完全函数依赖于X,则称Y部分函数依 p Y。 赖于X,记作X
例8: 学生(学号,姓名,所在系,系主任姓名,课程号,成绩) 学生关系模式存在的部分函数依赖: p (学号,课程号) 姓名 p 所在系 (学号,课程号) p (学号,课程号) 系主任姓名
教师姓 名
李林 78号
住址
课程号
C1
课程名
N1
李林
李林 汪佳 吴仪
78号
78号 59号 79号
C2
C3 C4 C5
N2
N3 N4 N5
师帆
76号
C6
N6
⑷当执行数据插入时,DB中的数据不能产生插入 异常现象 所谓“插入异常”是指希望插入的信息由于不 能满足数据完整性的某种要求而不能正常地被 插入到DB中的异常问题。 比如:上例中插入一个尚未安排授课的新进教师 信息. 原因: 因多种信息混合放在一个表中,可能造成因一 种信息被捆绑在其他信息上而产生的信息之间 相互依附存储的问题,使得信息不能独立插入。
第4章
关系数据库(RDB)规范化理论
4.1 关系模式规范化的必要性 4.2 数值依赖 4.3 范式与规范化 、关系分解原则
RDB规范化理论的目的是要设计“好的”RDB模式。要设计 好的关系模式,必须是关系满足一定的约束条件,此约束 形成了规范。 范式(Normal Form):衡量DB规范的层次或深度,DB规范化 层次由范式来决定。简记作NF. 根据关系模式满足的不同性质和规范化的程度,将关系模 式分为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、 BC范式、第四范式(4NF)、第五范式(5NF),范式越高规范 化程度越高。 规范化:低级关系模式通过模式分解转换为若干高级范式 的关系模式集合的过程。 规范化是在RDB中减少数据冗余的过程。
关系数据库规范化理论
第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)●每一个系名对该系的学生人数乘以每个学生选修的课程门数重复存储。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章关系数据库规范化理论一个关系数据库模式由一组关系模式组成,一个关系模式由一组属性名组成。
关系数据库设计,就是如何把已给定的相互关联的一组属性名分组,并把每一组属性名组成关系的问题。
然而,属性的分组不是唯一的,不同的分组对应着不同的数据库应用系统,它们的效率往往相差很远。
为了使数据库设计合理可靠,简单实用,长期以来,形成了关系数据库设计的理论——规范化理论。
4.1 关系规范化的作用规范化,就是用形式更为简洁,结构更加规范的关系模式取代原有关系模式的过程。
如果将两个或两个以上实体的数据存放在一个表里,就会出现下列三个问题:➢数据冗余度大➢插入异常➢删除异常所谓数据冗余,就是相同数据在数据库中多次重复存放的现象。
数据冗余不仅会浪费存储空间,而且可能造成数据的不一致性。
插入异常是指,当在不规范的数据表中插入数据时,由于实体完整性约束要求主码不能为空的限制,而使有用数据无法插入的情况。
删除异常是指,当不规范的数据表中某条需要删除的元组中包含有一部分有用数据时,就会出现删除困难。
(以P98工资表为例)解决上述三个问题的方法,就是将不规范的关系分解成为多个关系,使得每个关系中只包含一个实体的数据。
(讲例子解)当然,改进后的关系模式也存在另一问题,当查询职工工资时需要将两个关系连接后方能查询,而关系连接的代价也是很大的。
那么,什么样的关系需要分解?分解关系模式的理论依据又是什么?分解完后能否完全消除上述三个问题?回答这些问题需要理论指导。
下面,将加以讨论:4.2 函数依赖4.2.1属性间关系实体间的联系有两类:一类是实体与实体之间联系;另一类是实体内部各属性间的联系。
数据库建模一章中讨论的是前一类,在这里我们将学习第二类。
和第一类一样,实体内部各属性间的联系也分为1:1、1:n 和m:n 三类: 例:职工(职工号,姓名,身份证号码,职称,部门) 1、 一对一关系(1:1)设X 、Y 是关系R 的两个属性(集)。
如果对于X 中的任一具体值,Y 中至多有一个值与之对应,反之,对于Y 中的任一具体值,X 中也至多有一个值与之对应,则称X 、Y 两属性间是一对一关系。
如本例职工关系中职工号与身份证号码之间就是一对一关系。
2、一对多关系(1:n )设X 、Y 是关系R 的两个属性(集)。
如果对于X 中的任一具体值,Y 中可以找到多个值与之对应,而对于Y 中的任一具体值,X 中至多只有一个值与之对应,则称属性X 对Y 是一对多关系。
如职工关系中职工号与职称之间就是一对多的关系。
3、多对多关系(m:n )设X 、Y 是关系R 的两个属性(集)。
如果对于X 中的任一具体值,Y 中有n 个值与之对应,而对于Y 中的任一具体值,X 中也有m 个值与之对应,则称属性X 对Y 是一对多(m:n )关系。
例如,职工关系中,职称与部门之间就是多对多的关系。
上述属性间的三种关系,实际上是属性值之间相互依赖与相互制约的反映,因而称之为属性间的数据依赖。
数据依赖共有三种:➢ 函数依赖(Functional Dependency ,FD ) ➢ 多值依赖(Multivalued Dependency ,MVD ) ➢ 连接依赖(Join Dependency ,JD ) 其中最重要的是函数依赖和多值依赖。
4.2.2 函数依赖函数依赖,是属性之间的一种联系。
在关系R 中,X 、Y 为R 的两个属性或属性组,如果对于R 的所有关系r 都存在:对于X 的每一个具体值,Y 都只有一个具体值与之对应,则称属性Y 函数依赖于属性X 。
或者说,属性X 函数决定属性Y ,记作X →Y 。
其中X 叫作决定因素,Y 叫作被决定因素。
上述定义,可简言之:如果属性X 的值决定属性Y 的值,那么属性Y 函数依赖于属性X 。
换一种说法:如果知道X 的值,就可以获得Y 的值,则可以说X 决定Y 。
若Y 函数不依赖于XX →若X →Y ,Y →X ,记作:◆ 如果X 、Y 间是1:1关系,则存在函数依赖 X ←→Y◆ 如果X 、Y 间是1:n 关系,则存在函数依赖: X →Y 或Y →X (多方为决定因素)◆ 如果X 、Y 间是m:n 关系,则不存在函数依赖。
注意,属性间的函数依赖不是指R 的某个或某些关系子集满足上述限定条件,而是指R 的一切关系子集都要满足定义中的限定。
只要有一个具体的关系r (R 的一个关系子集)不满足定义中的条件,就破坏了函数依赖,使函数依赖不成立。
这里的关系子集,指的是R 的某一部分元组的集合,例如:地测学院的学生关系中只包含了地测学院学生的数据,所以它是长安大学学生关系的一个子集。
4.2.3 码的定义前面,我们对码进行了直观化的定义,下面用函数依赖的概念对码作出较为精确的形式化的定义:设K是关系模式R(U,F)中的属性或属性组,K’是K的任一子集。
若K→U,而不存在K'→U,则K为R的候选码(Candidate Key)➢若候选码多于一个,则选其中的一个为主码(Primary Key);➢包含在任一候选码中的属性,叫做主属性(Primary Attribute);➢不包含在任何码中的属性称为非主属性(Nonprime Attribute)或非码属性(Nonkey Attribute)➢关系模式中,最简单的情况是单个属性是码,称为单码(Single Key);最极端的情况是整个属性组是码,称为全码(All-Key)。
前面已多次遇到单码的情况,下面是一个全码的例子:签约(演员名,制片公司,电影名)外码:设有两个关系R和S,X是R的属性或属性组,并且X不是R的码,但X是S 的码(或与S的码意义相同),则称X是R的外部码(Foreign Key),简称外码或外键。
如:职工(职工号,姓名,性别,职称,部门号)部门(部门号,部门名,电话,负责人)其中职工关系中的“部门号”就是职工关系的一个外码。
在此需要注意,在定义中说X不是R的码,并不是说X不是R的主属性,X不是码,但可以是码的组成属性,或者是任一候选码中的一个主属性。
如:学生(学生号,姓名,性别,年龄…)课程(课程号,课程名,任课老师…)选课(学生号,课程号,成绩)在选课关系中,(学生号,课程号)是该关系的码,学生号、课程号又分别是组成主码的属性(但单独不是码),它们分别是学生关系和课程关系的主码,所以是选课关系的两个外码。
关系间的联系,可以通过同时存在于两个或多个关系中的主码和外码的取值来建立。
如要查询某个职工所在部门的情况,只需查询部门表中的部门号与该职工部门号相同的记录即可。
所以,主码和外码提供了一个表示关系间联系的途径。
4.2.4 函数依赖和码的唯一性由上述码的形式化定义,我们可以说:码是由一个或多个属性组成的,可唯一标识元组的最小属性组。
码在关系中总是唯一的,即一个码函数唯一地决定一行。
如果码的值重复,则整个元组都会重复。
否则,违反了实体完整性规则。
而元组的重复则表示存在两个完全相同的实体,这显然是不可能的,所以码是不允许重复取值的。
所以,只有当某个属性或属性组能够函数决定关系中的每一个其它的属性,且该属性组的任何一个真子集都做不到这一点时,该属性或属性组才是该关系的码。
函数依赖是一个与数据有关的事物规则的概念。
如果属性B函数依赖于属性A,那么若知道了A的值,则完全可以找到B的值。
这并非是可以由A的值计算出B的值,而是逻辑上只能存在一个B的值。
4.3 关系模式的规范化一、非规范化的关系当一个表中存在还可以再分的数据项时,这个表就是非规范化的表。
非规范化表存在两种情况:➢表中具有组合数据项(P102表6-4)➢表中具有多值数据项(P103表6-5)当一个关系中的所有分量都是不可再分的数据项时,该关系是规范化的。
即当表中不存在组合数据项和多值数据项,只存在不可分的数据项时,这个表是规范化的。
二维表按其规范化程度从低到高可分为5级范式(Normal Form),分别称为1NF、2NF、3NF(BCNF)、4NF、5NF。
规范化程度较高者必是较低者的子集,即:1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF二、第一范式(1NF)定义1:如果关系模式R中不包含多值属性,则R满足第一范式(First Normal Form),记作:R∈1NF1NF是对关系的最低要求,不满足1NF的关系是非规范化的关系。
非规范化关系转化为规范化关系1NF方法很简单,只要上表分别从横向、纵向展开即可。
如下表:上表虽然符合1NF,但仍是有问题的关系,表中存在大量的数据冗余和潜在的数据更新异常。
原因是(职工号,学历)是右表的码,但姓名、职称、系名、系办地址却与学历无关,只与码的一部分有关。
所以上表还需进一步地规范化。
三、第二范式(2NF)定义1:设X、Y是关系R的两个不同的属性或属性组,且X →Y。
如果存在X的某一个真子集X’,使X’→Y成立,则称Y部分函数依赖于X,记作:X P→Y(Partial)。
反之,则称Y完全函数依赖于X,记作:X F→Y (Full)定义2:如果一个关系R∈1NF,且它的所有非主属性都完全函数依赖于R的任一候选码,则R属于第二范式,记作:R∈2NF。
说明:上述定义中所谓的候选码也包括主码,因为码首先应是候选码,才可以被指定为码。
例如关系模式:职工(职工号,姓名,职称,项目号,项目名称,项目角色)中(职工号,项目号)是该关系的码,而职工号→姓名、职工号→职称、项目号→项目名称…所以(职工号,项目号)P→职称、(职工号,项目号)P→项目名称故上述职工关系不符合第二范式要求。
它存在三个问题:插入异常、删除异常和修改异常。
其中修改异常是这样的,当职工关系中项目名称发生变化时,由于参与该项目的人员很多,每人一条记录,要修改项目信息,就得对每一个参加该项目的人员信息进行修改,加大了工作量,还有可能发生遗漏,存在着数据一致性被破坏的可能。
可把上述职工关系分解成如下三个关系:职工(职工号,姓名,职称)参与项目(职工号,项目号,项目角色)项目(项目号,项目名称)上述三个关系都符合定义2的要求,所以都符合2NF推论:如果关系模式R∈1NF,且它的每一个候选码都是单码,则R∈2NF符合第二范式的关系模式仍可能存在数据冗余、更新异常等问题。
如关系职工信息(职工号,姓名,职称,系名,系办地址)虽然也符合2NF,但当某个系中有100名职工时,元组中的系办地址就要重复100次,存在着较高的数据冗余。
原因是关系中,系办地址不是直接函数依赖于职工号,而是因为职工号函数决定系名,而系名函数决定系办地址,才使得系办地址函数依赖于职工号,这种依赖是一个传递依赖的过程。
所以,上述职工信息的关系模式还需要进一步的规范化。
四、第三范式(3NF)定义1:在关系R中,X、Y、Z是R的三个不同的属性或属性组,如果X→Y,Y→Z,但Y→X,且Y不是X的子集,则称Z传递函数依赖于X。