1 第一范式
1NF:第一范式—— 即关系模式中的属性的值域中每一个值都是不可再分解的值。
如果某个数据库模式都是第一范式的,则称该数据库模式是属于第一范式的数据库模式。
比如有一个关系 study={学号,课程},若有这样几行记录:
这时的第三条记录就表示本关系模式不是1NF的,因为课程中的值域还是可以分解的,它包括了两门课程。
如果改为下列形式,则是1NF
2 第二范式
如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键, 则称为第二范式模式。
首先温习、理解“非主属性”、“完全函数依赖”、“候选键”这三个名词的含义。
(1)候选键:可以唯一决定关系模式R中某元组值且不含有多余属性的属性集。
(2)非主属性:即非键属性,指关系模式R中不包含在任何建中的属性。
(3)完全函数依赖:设有函数依赖W→A,若存在XW,有X→A成立,那么称W→A是局部依赖,否则就称W→A是完全函数依赖。
在分析是否为第2范式时,应首先确定候选键,然后把关系模式中的非主属性与键的依赖关系进行考察, 是否都为完全函数依赖,如是,则此关系模式为2NF。
如果数据库模式中每个关系模式都是2NF的,则此数据库模式属于2NF的数据库模式。
比如有一个关系 study={学号,学生姓名,课程,成绩}
其中,(学号,课程)为候选键;“成绩”对键的函数依赖为完全函数依赖,而“姓名”只依赖于“学号”, 对键的依赖为部分函数依赖。所以,该关系模式不符合2NF。如果将该 模式分解为以下两个关系:
student={学号,姓名}
study={学号,课程,成绩}
则分解后的两个关系模式均为2NF
3 第三范式
如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R为第三范式模式。
传递依赖的含义: 在关系模式中,如果Y→X,X→A,且XY(X不决定Y)和AX(A不属于X),那么Y→A是传递依赖。 Notice:要求非主属性都不传递依赖于候选键。
上一小节例子中student={学号,姓名},study={学号,课程,成绩}都是3NF
4 BCNF
这个范式和第三范式有联系,它是3NF的改进形式。
若关系模式R是第一范式,且
每个属性都不传递依赖于R的候选键。这种关系模式就是BCNF模式。
四种范式,可以发现它们之间存在如下关系:
5 分解成BCNF模式集的算法
对于任一关系模式,
(1)可找到一个分解达到3NF,且具有无损联接和保持函数依赖性。
(2)对于BCNF分解,则可以保证无损联接但不一定能保证保持函数依赖集。
无损联接分解成BCNF模式集的算法:
(1)置初值ρ={R};
(2)如果ρ中所有关系模式都是BCNF,则转(4);
(3)如果ρ中有一个关系模式S不是BCNF,则S中必能找到一个函数依赖集X→A有X不是S的键,且A不属于X,设S1=XA,S2=S-A,用分解S1,S2代替S,转(2);
(4)分解结束。输出ρ。
Notice:重点在于(3)步,判断哪个关系不是BCNF,并找到X和A。
例:关系模式R<U,F>,其中:U={A,B,C,D,E},F={A→C,C→D,B→C,DE→C,CE→A},将其分解成BCNF并保持无损连接。
解:
① 令ρ={R(U,F)}。
② ρ中不是所有的模式都是BCNF,转入下一步。
③ 分解R:R上的候选关键字为BE(因为所有函数依赖的右边没有BE)。考虑A→C函数依赖不满足BCNF条件(因A不包含候选键BE),将其分解成R1(AC)、R2(ABDE)。
计算R1和R2的最小函数依赖集分别为:F1={A→C},F2={B→D,DE→D,BE→A}。其中B→D是由于R2中没有属性C且B→C,C→D;DE→D是由于R2中没有属性C且DE→C,C→D;BE→A是由于R2中没有属性C且B→C,CE→A。又由于DE→D是蕴含关系,可以去掉,故F2={B→D,BE→A}。
分解R2:R2上的候选关键字为BE。考虑B→D函数依赖不满足BCNF条件,将其分解成R21(BD)、R22(ABE)。计算R21和R22的最小函数依赖集分别为:F21={B→D},F22={BE→A}。
由于R22上的候选关键字为BE,而F22中的所有函数依赖满足BCNF条件。故R可以分解为无损连接性的BCNF如:ρ={R1(AC),R21(BD),R22(ABE)}
6 分解成3NF模式集
(1)如果R中的某些属性在F的所有依赖的左边和右边都不出现,那么这些属性可以从R中分出去,单独构成一个关系模式。
(2)如果F中有一个依赖X→A有XA=R,则ρ={R},转(4)
(3)对于F中每一个X→A,构成一个关系模式XA,如果F有有X→A1,X→A2...X→An,则可以用模式XA1A2...An代替n个模式XA1,XA2...XAn;
(4)w分解结束,输入ρ。
例1:关系模式R<U,F>,其中U={C,T,H,R,S,G},
F={CS→G,C→T,TH→R,HR→C,HS→R},将其分解成3NF并保持函数依赖。
解:根据算法进行求解
(一)计算F的最小函数依赖集
① 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。由于F的所有函数依赖的右边都是单个属性,故不用分解。
② 去掉F中多余的函数依赖
A.设CS→G为冗余的函数依赖,则去掉CS→G,得:
F1={C→T,TH→R,HR→C,HS→R}
计算(CS)F1+:
设X(0)=CS
计算X(1):扫描F1中各个函数依赖,找到左部为CS或CS子集的函数依赖,找到一个C→T函数依赖。故有X(1)=X(0)∪T=CST。
计算X(2):扫描F1中的各个函数依赖,找到左部为CST或CST子集的函数依赖,没有找到任何函数依赖。故有X(2)=X(1)。算法终止。
(CS)F1+= CST不包含G,故CS→G不是冗余的函数依赖,不能从F1中去掉。
B.设C→T为冗余的函数依赖,则去掉C→T,得:
F2={CS→G,TH→R,HR→C,HS→R}
计算(C)F2+:
设X(0)=C
计算X(1):扫描F2中的各个函数依赖,没有找到左部为C的函数依赖。故有X(1)=X(0)。算法终止。故C→T不是冗余的函数依赖,不能从F2中去掉。
C.设TH→R为冗余的函数依赖,则去掉TH→R,得:
F3={CS→G,C→T,HR→C,HS→R}
计算(TH)F3+:
设X(0)=TH
计算X(1):扫描F3中的各个函数依赖,没有找到左部为TH或TH子集的函数依赖。故有X(1)=X(0)。算法终止。故TH→R不是冗余的函数依赖,不能从F3中去掉。
D.设HR→C为冗余的函数依赖,则去掉HR→C,得:
F4={CS→G,C→T,TH→R,HS→R}
计算(HR)F4+:
设X(0)=HR
计算X(1):扫描F4中的各个函数依赖,没有找到左部为HR或HR子集的函数依赖。故有X(1)=X(0)。算法终止。故HR→C不是冗余的函数依赖,不能从F4中去掉。
E.设HS→R为冗余的函数依赖,则去掉HS→R,得:
F5={CS→G,C→T,TH→R,HR→C}
计算(HS)F5+:
设X(0)=HS
计算X(1):扫描F5中的各个函数依赖,没有找到左部为HS或HS子集的函数依赖。故有X(1)=X(0)。算法终止。故HS→R不是冗余的函数依赖,不能从F5中去掉。即:F5={CS→G,C→T,TH→R,HR→C,HS→R}
③ 去掉F5中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖),没有发现左边有多余属性的函数依赖。
故最小函数依赖集为:F={CS→G,C→T,TH→R,HR→C,HS→R}
(二)由于R中的所有属性均在F中都出现,所以转下一步。
(三)对F按具有相同左部的原则分为:
R1=CSG,R2=CT,R3=THR,R4=HRC,R5=HSR。
所以ρ={R1(CSG),R2(CT),R3(THR),R4(HRC),R5(HSR)}。
转换成3NF的保持无损连接和函数依赖的分解
例2:关系模式R<U,F>,其中:U={C,T,H,R,S,G},
F={CS→G,C→T,TH→R,HR→C,HS→R},分解成3NF并保持无损连接和函数依赖。
解:(1) 根据上例例1,得到3NF并保持函数依赖的分解如下:
σ={ R1(CSG),R2(CT),R3(THR),R4(HRC),R5(HSR) }。
(2) 而HS是原模式的关键字,所以τ={CT,CSG,CHR,HSR,HRT,HS}。由于HS是模式HSR的一个子集,所以消去HS后的分解{CT,CSG,CHR,HSR,HRT}就是具有无损联接性和保持函数依赖性的分解,且其中每一个模式均为3NF。
7 模式设计方法的原则
关系模式R相对于函数依赖集F分解成数据库模式ρ={R1,R2...Rk},一般具有下面四项特性:
(1)ρ中每个关系模式Ri上应具有某种范式性质(3NF或BCNF)
(2)无损联接性。
(3)保持函数依赖集。
(4)最小性,即ρ中模式个数应最少且模式中属性总数应最少。
一个好的模式设计方法应符合下列三条原则:
(1)表达性
(2)分离性
(3)最小冗余性
8 多值依赖
函数依赖有效地表达了属性值之间多对一的联系,是最重要的一种数据依赖;而多值依赖是为了刻划属性值之间一对多的联系.
9 第四范式
设R是一个关系模式,D是R上的多值依赖集合。如果D中成立非平凡多值依赖X→→Y时,X必是R的超键, 那么称R是第四范式(4NF)。
(定理) 一个关系模式若属于4NF,则必然属于BCNF。
- 大小: 1.8 KB
- 大小: 2 KB
- 大小: 3.3 KB
- 大小: 3.3 KB
分享到:
相关推荐
数据库系统范式是数据库系统设计的基础,它们是关系数据库设计的标准,旨在解决数据冗余、更新异常、插入异常和删除异常等问题。 1.1 数据库系统原理 数据库系统设计的主要目标是解决数据依赖对关系数据库的影响...
在数据库设计中,关系范式是用于减少数据冗余和提高数据一致性的关键概念之一。范式可以被看作是一组规则,通过这些规则来组织数据库表,使得它们尽可能地保持数据的完整性和一致性。本文将对关系范式的几个关键点...
在自考考试中,数据库原理通常会涵盖关系数据库模型、SQL语言、数据库设计与优化等多个方面。以下是对这些关键知识点的详细阐述: 1. **关系数据库模型**:这是最常见的数据库模型,基于数学上的关系理论,由若干个...
1.2 数据库系统原理:关系模式的范式 关系模式的范式是指关系模式的规范化程度。关系模式的范式可以分为第一范式、第二范式、第三范式、BCNF范式、第四范式等。每个范式都有其特定的规范化规则,旨在消除不合适的...
【数据库系统原理】第三范式(3NF)是数据库设计中的一个重要概念,它是为了消除冗余数据和确保数据一致性而提出的。在3NF中,每个非主属性必须直接依赖于整个键,而不是键的一部分,同时避免传递依赖。以下是对题目...
数据库原理及应用是信息技术领域中的核心课程之一,它主要探讨如何有效地存储、管理和检索数据,以支持各种业务和信息系统。本书详细介绍了数据库的基础概念、设计原则以及实际应用,旨在帮助读者深入理解数据库的...
数据库原理是计算机科学中的核心课程之一,主要研究如何组织、存储和检索数据的系统。清华大学的这本"数据库原理讲义"无疑是深入学习这一领域的宝贵资料。以下将根据标题和描述,结合通常在数据库原理课程中涉及的...
2. **关系模型**:在《数据库原理及应用》中,关系模型是最常见的数据表示方式,以二维表格的形式展示数据。理解关系、属性、元组、键等概念,以及关系代数和SQL语言是这一部分的重点。 3. **ER模型与概念设计**:...
【数据库原理4】主要探讨的是关系数据库的规范化理论,这是数据库设计的重要环节,特别是逻辑设计。规范化理论由E.F.Codd提出,旨在解决数据库设计中可能出现的问题,如数据冗余、插入异常、删除异常和更新异常,...
数据库原理及应用教程是学习数据库系统的重要教材,其第四版课后答案涵盖了数据库设计、管理、查询和优化等核心知识点。这份资料对于深入理解和实践数据库技术具有极大的帮助。 1. **数据库基本概念**:数据库...
教学内容根据国家信息产业和电子商务行业的需求精心选取,涵盖数据库的安装配置、表的创建、关系模式、范式理论、SQL查询语句、T-SQL程序设计、数据复制恢复、权限设置等内容。教材选用最新且适合高职高专学生的教材...
《数据库原理及技术》是钱学忠编著的一本深入探讨数据库理论与实践的教材,旨在帮助学生和专业人士掌握数据库系统的基础知识和实际操作技能。该书涵盖了数据库设计、SQL语言、关系数据库理论、数据库管理等多个核心...
通过学习这些章节,你将能够全面了解数据库原理,掌握关系数据库的基本操作,理解数据库设计的重要性,并了解如何确保数据库的安全。这将为后续的数据库应用开发、数据库管理以及数据分析打下坚实的基础。
《数据库原理》课后的习题涵盖了数据库系统的多个核心领域,包括关系数据库理论、SQL语言、数据库安全性、数据库完整性、数据库设计、查询处理和优化、数据库恢复技术和并发控制。以下是这些章节中的关键知识点: 1...
书中可能包含范式理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(巴斯-科德范式),以及如何通过ER图(实体-关系图)来设计数据库模式。 4. **事务处理**:事务是数据库操作的基本单位,确保了...
数据库原理复习题 以下是根据提供的文件信息生成的知识点: 一、数据库原理概念 * 元数:关系中属性个数称为“元数”。 * 元组个数:关系中元组个数称为基数。 * 完整性措施:DBS 的一项措施,用于确保数据的一致...
数据库原理及应用是计算机科学中的核心课程之一,它主要研究如何高效、安全地存储和管理数据。本教程针对“数据库原理及应用教程(第二版)”进行了解析,旨在帮助学习者深入理解数据库系统的基本概念、设计方法以及...
数据库原理及应用是计算机科学中的一个核心领域,它涉及到数据的组织、存储、检索和管理。这门课程的第二版课件可能包含了丰富的理论知识和实践案例,旨在帮助学生理解和掌握数据库系统的基本概念、设计原则以及操作...