第6章 关系数据库理论W11
关系数据库的基本理论.
学生关系R1的主键为学号,系部关系R2的主键为系编号,在R1中系 编号是它的外键,即系编号是R2的主键,将它作为外键放在R1中,实 现两关系的联系。
4)主属性和非主属性。包含在任何一个候选主键字中的属性称为主属性, 不包含在任何一个候选关键字中的属性称为非主属性。
上一页 本节首页本章首页
2.关系模式
学生(学号,姓名,性别,年龄,系别) 教师(教师号,姓名,性别,年龄,职称,工资,岗位津贴,系别) 课程(课程号,课程名,课时) 选课(学号,课程名,成绩) 授课(教师号,课程号) 在每个关系中,又有其相应的数据库的实例(元组)。
上一页 本节首页本章首页
2.5.2 关系的完整性
关系模型的完整性规则是对关系的某种约束条件。关系的完整性约 束条件包括三大类:实体完整性,参照完整性和用户定义的完整性。
在定义中,n=1的关系只含有一个属性,称为单元关系。n=2为二 元关系,以此类推。
在 SQL Server 数据库中,通常关系被称为数据表,属性被称为字 段,元组则被称为记录。
如下表给出了一张学生选课表,该表由学生姓名、性别和所选课程 组成,该关系的名字为学生选课表,属性名就是域名,即姓名,性别和
所选课程,这个关系可表示为
任何一种运算都是将一定的运算操作应用于一定的运算对象上, 得到预期的运算结果。所以运算对象、运算符、运算结果是运算的三 大要素。
数据库技术及应用第6章关系数据库理论
使之规范化。 例如上述的关系模式“教学”,可以按“一事一地”
的原则分解成“学生”、“教学系”和“选课”三个 关系,其关系模式为
学生(学号,姓名,年龄,性别,系名称) 教学系(系名,系主任) 选课(学号,课程名,成绩)
第6章 关系数据库理论
表6-2 教学关系分解后形成的三个关系
第6章 关系数据库理论
第6章 关系数据库理论
多值依赖与函数依赖相比,具有以下两个基本的区别: (1) 多值依赖的有效性与属性集的范围有关。 (2) 多值依赖没有自反律。
第6章 关系数据库理论
3. 4NF的定义 定义6-9:关系模式R〈U,F〉(1NF,如果对于R的 每个非平凡多值依赖X→ →Y(Y(X),X必含有码,则
第6章 关系数据库理论
6.5 判断下面的关系模式是不是BCNF,为什么? (1) 任何一个二元关系。 (2) 关系模式选课(学号,课程号,成绩),函数依赖 集F={(学号,课程号)→成绩}。 (3) 关系模式R(A,B,C,D,E,F),函数依赖集 F={A→BC,BC→A,BCD→EF,E→C}。
第6章 关系数据库理论
1NF
消除决定因素 非码的非平凡 函数依赖
2NF 3NF
BCNF
4NF 5NF
消除非主属性对码的部分函数依赖 消除非主属性对码的部分和传递函数依赖 消除主属性对码的部分和传递函数依赖 消除非平凡且非函数依赖的多值依赖 消除不是由候选关键字蕴含的连接依赖
图6-2 各种范式及规范化过程
第6章 关系数据库理论
6.6 设关系模式R{B,O,I,S,Q,D},函数依 赖集F={S→D,I→S,IS→Q,B→Q}。
(1) 找出R的主码。 (2) 把R分解为BCNF,且具有无损连接性和函数依 赖保持性。 6.7 在关系模式选课(学号,课程号,成绩)中, “学号→ → 课程号”正确吗?为什么? 6.8 设 有 关 系 模 式 R(A , B , C) , 数 据 依 赖 集 F={AB→C,C→ →A},R属于第几范式?为什么?
数据库课件 第六章 关系数据库设计理论优秀课件
6.3 规范化
• 范式是对关系数据库的规范化过程中为不同 程度的规范化要求设立的不同标准。
• 范式是符合某一种级别的关系模式的集合。
• 范式的种类: 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)
6.1 问题的提出
存在的问题: ⒈ 数据冗余太大
– 浪费大量的存储空间 ⒉ 更新异常
– 更新代价大,可能导致数据不一致 ⒊ 插入异常
– 该插的数据插不进去 ⒋ 删除异常
– 不该删除的数据不得不删,造成某些数据丢失
6.1 问题的提出
结论: • WAE关系模式不是一个好的模式。 • “好”的模式:不会发生插入异常、删除异常、 更新异常,数据冗余应尽可能少。
例:在关系wae中有:
仓库号→所在区域,所在区域→区域主管 可得到传递函数依赖:仓库号 t 区域主管
6.2.2 码
定义6.5 设K为R<U,F>中的属性或属性组合。若 K F U,则K称为R的一个侯选码。 若关系模式R有多个候选码,则选定其中的一 个做为主码。 • 主属性:包含在任何一个候选码中的属性
注:对任一关系模式,平凡函数依赖必然存在,则一般讨论非平凡函 数依赖。
6.2.1 函数依赖
• 完全函数依赖与部分函数依赖 定义6.3 在R(U)中,如果X→Y,并且对于X的任何 一个真子集X’ ,都有X’ → Y, 则称Y对X完全函数依 赖,记作X f Y。
若X→Y,但Y不完全函数依赖于X,则称Y对X 部分函数依赖,记作X P Y。
注:当确定函数依赖关系时,可从属性间的联系入手
6.2.1 函数依赖
《数据库》作业第6章 关系数据库理论
《数据库》作业第6章关系数据库理论在当今数字化的时代,数据库成为了信息存储和管理的重要工具。
关系数据库作为其中一种常见且重要的类型,其理论基础对于设计高效、准确和可靠的数据库系统至关重要。
关系数据库理论的核心概念之一是关系模型。
关系模型将数据组织成一张张二维表格,也就是关系。
每个关系都有明确的属性和行。
属性定义了数据的类型和特征,而行则代表了具体的实例。
这种简洁而清晰的结构使得数据的存储和查询变得更加直观和易于理解。
关系数据库中的完整性约束是保证数据质量和准确性的关键。
实体完整性要求主关键字的值不能为空且唯一,这确保了每一行数据都能被准确识别和区分。
参照完整性则规定了不同关系之间的关联规则,防止出现不合理或不一致的数据引用。
例如,在一个订单管理系统中,如果存在订单与客户的关系,那么订单中的客户 ID 必须在客户表中存在对应的记录,否则就违反了参照完整性。
关系代数是关系数据库操作的理论基础。
它提供了一系列的操作符,如选择、投影、连接、并、交和差等,用于从关系中获取所需的数据。
选择操作类似于筛选,根据指定的条件从关系中选出满足条件的行;投影则是选取关系中的某些列,从而得到一个新的关系。
连接操作则用于将多个关系根据共同的属性进行合并,以获取更全面的信息。
函数依赖是关系数据库理论中的一个重要概念。
如果属性 A 的值确定时,属性 B 的值也随之唯一确定,那么就说属性 B 函数依赖于属性A。
通过分析函数依赖,可以发现关系中的冗余数据,并对关系进行规范化处理,以减少数据的冗余和不一致性。
关系模式的规范化是设计良好关系数据库的重要步骤。
常见的规范化级别包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
第一范式要求每个属性都是不可再分的原子值;第二范式要求在满足第一范式的基础上,消除非主属性对主关键字的部分函数依赖;第三范式则要求在满足第二范式的基础上,消除非主属性对主关键字的传递函数依赖。
以一个学生课程成绩管理系统为例,最初可能设计的关系为“学生课程成绩(学号,姓名,课程号,课程名,成绩)”。
第六章 关系数据库理论
的数据依赖。
25
6.1 规范化问题的提出
把SCD分解为下面三个关系模式 (1)学生关系Student(Sno,Sname,Sage,Sdept) (2)选课关系SC(Sno,Cno,Grade) (3)系关系D(Sdept,Mname) 如图6.3所示。
基本原则: 一事一地
33
6.1 规范化问题的提出
如 SCD SCD(Sno,Sname,Sage,Sdept,Dname,Cno,Grade) 涉及到: 学生 系 学生选课 三件事
34
6.1 规范化问题的提出
可将SCD关系模式分解为:
S(Sno,Sname,Sage,Sdept) D(Sdept,Dname) SC(Sno, Cno, Grade )
C1 Compu GOOD
C2 Progr EXCEL C3 DB GOOD
C3 DB C4 OS
OK GOOD
C6 MATH GOOD
Credit 3 3 4
4 4 4
图6.4 教师任课关系实例
29
6.1 规范化问题的提出
在这个关系中,只有根据教师号和课程号才 能确定哪位教师上哪门课,也既: 关系TDC的关键字是(教师号,课程号码) 该关系在使用过程中存在下面几个问题:
16
6.1 规范化问题的提出
根据实际情况,这些数据有如下语义规定:
一个系有若干个学生,但一个学生只属于一个系 一个系只有一名系主任 一个学生可以选修多门功课,每门课程可有若干学生选修; 每个学生学习每门课程有一个成绩
SCD关系模式的实例 如图6.1所示。
17
6.1 规范化问题的提出
数据库原理之关系数据库理论
数据库原理之关系数据库理论在当今数字化的时代,数据库无疑是信息存储和管理的核心工具。
而在众多类型的数据库中,关系数据库因其强大的功能和广泛的应用占据着重要的地位。
接下来,让我们一起深入探讨关系数据库理论的相关知识。
关系数据库的核心概念是关系,也就是通常所说的二维表。
一个关系就是由行和列组成的表格,每一行代表一个唯一的实体,每一列则代表实体的一个属性。
例如,一个学生信息表可以包含学号、姓名、年龄、性别等列,而每一行则对应着一个具体学生的信息。
在关系数据库中,有几个重要的术语和概念需要我们理解。
首先是主键,它是用于唯一标识关系中每一行的属性或属性组合。
比如在学生信息表中,学号通常被设定为主键,因为每个学生的学号都是独一无二的。
其次是外键,它用于建立不同关系之间的联系。
假设我们还有一个课程表和一个选课表,选课表中的“学号”字段就是外键,通过它可以关联到学生信息表中的主键“学号”,从而实现数据的关联和整合。
关系数据库的设计需要遵循一定的原则,以确保数据的准确性、完整性和一致性。
其中,最重要的原则之一是范式。
常见的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
第一范式要求每个单元格只能包含一个值,不能是多个值的组合。
例如,如果在一个字段中同时存储了姓名和地址,就违反了第一范式,应该将其拆分成两个字段分别存储。
第二范式则要求在满足第一范式的基础上,非主键属性必须完全依赖于主键,而不能只依赖于主键的一部分。
第三范式进一步要求非主键属性之间不能有传递依赖关系。
遵循这些范式进行数据库设计,可以有效地减少数据冗余,提高数据的一致性和完整性,同时也便于数据的查询和更新操作。
关系数据库中的数据操作主要包括查询、插入、更新和删除。
查询是最常见也是最重要的操作之一。
通过使用结构化查询语言(SQL),我们可以根据各种条件从数据库中获取所需的数据。
例如,要查询年龄大于 20 岁的学生信息,可以使用以下的 SQL 语句:```sqlSELECT FROM students WHERE age > 20;```插入操作用于向数据库中添加新的数据行。
Windows Server数据库课件--第06章 关系数据理论(2)
总结:若R3NF,则R的每一个非主属性既不部分 函数依赖于候选码也不传递函数依赖于候选码。
5/68
6.2.5 3NF
2. 如何将关系模式从2NF转换为3NF? -----采用投影分解法
将一个2NF的关系分解为多个3NF关系;
这种分解也并不能完全消除关系模式中的各种异 常情况和数据冗余。 例:关系SL(Sno, Sdept, Sloc)分解为: SD(Sno,Sdept) SL(Sno,Sloc)
29/68
6.3 数据依赖的公理系统
3. 函数依赖的闭包 定义6.13 设关系模式R<U,F> ,U={A1,A2…,An},X U,
XF+ ={Ai|X→Ai能由F 根据Armstrong公理导出} XF+称为属性集X关于函数依赖集F 的闭包。
30/68
6.3 数据依赖的公理系统
3. 函数依赖闭包
CN,
G),
学号、姓名、年龄、教师名、课程名、学生成绩
假设学生有重名,每个教师只教一门课,但一门课 可有几个教师开设。当某个学生选定某门课后,其上 课教师就固定了。 (1)写出该关系模式的候选码
(2)根据上述规定,写出存在的基本函数依赖; (3)试问该关系模式最高达到第几范式?为什么? (4)如果STC不属于3NF,分解关系模式使之属于3NF。
23/68
6.3 数据依赖的公理系统
(2)Armstrong定理的证明 ② 增广律: 若X→Y为F所蕴含,且Z U,
则XZ→YZ 为F所蕴含。
证:设X→Y为F所蕴含,且Z U。 设R<U,F> 的任一关系r中任意的元组t,s: 若:t[XZ]=s[XZ], 则有:t[X]=s[X]和t[Z]=s[Z];
关系数据库理论
关系数据库理论数据库是现代信息系统中不可或缺的一部分,而关系数据库作为其中最重要的一种类型,承载着巨大的信息存储和管理压力。
关系数据库理论是关系数据库设计和应用的理论基础,其研究内容涵盖了关系模型、关系代数、关系演算等方面。
关系数据库模型关系数据库模型是关系数据库理论的核心内容之一。
它采用了关系模型来描述数据之间的联系。
在关系数据库中,数据被组织为一系列的表,每个表被称为一个关系,而表中的每一行被称为一个元组,每一列被称为一个属性。
关系模型的特点是数据的组织方式清晰、易理解,有利于数据的查询和管理。
关系代数关系代数是关系数据库理论中用于描述关系操作的一种代数体系。
它定义了一系列的操作符,如选择、投影、联接等,用于对关系进行增删改查操作。
通过关系代数,可以方便地进行复杂的数据查询和操作,提高了数据库的表达能力和灵活性。
关系演算关系演算是关系数据库理论中另一种描述关系操作的形式。
它分为两种:元组关系演算和域关系演算。
元组关系演算通过描述查询结果的形式来表示查询,而域关系演算则通过描述查询条件的形式来表示查询。
通过关系演算,可以形式化地描述数据库查询,从而避免了不同人对查询语句的理解差异。
数据完整性数据库的数据完整性是数据库理论中一个重要的概念。
数据完整性包括实体完整性、参照完整性、用户定义完整性等几个方面。
实体完整性要求每个表中的主键不能为空且唯一,参照完整性要求外键值必须存在于被引用的表中。
数据完整性的保障是数据库设计和开发的重要目标之一。
数据一致性数据一致性是数据库中的另一个重要概念。
数据一致性要求数据库中的数据在不同的时间点和不同的地方都保持一致性。
在多用户环境下,数据库的数据一致性需要通过事务管理和并发控制等机制来保障,以确保数据库操作的正确性和可靠性。
数据库范式数据库范式是数据库理论中用于优化数据库设计的一种规范。
数据库范式分为一至六个不同的级别,每个级别都有特定的规范要求。
通过合理地设计数据库,遵循数据库范式的要求,可以避免数据冗余、提高数据的一致性和完整性,从而提高数据库的性能和可靠性。
关系数据库理论
关系数据库理论在当今数字化的时代,数据的管理和处理变得至关重要。
关系数据库作为一种广泛应用的数据存储和管理方式,其背后的理论支撑着整个系统的有效运作。
首先,我们来理解一下什么是关系数据库。
简单来说,关系数据库就是将数据以表格的形式进行组织和存储,这些表格之间通过特定的关系相互关联。
就好比我们日常使用的电子表格,但它更强大、更规范、更便于管理和查询。
关系数据库理论中有几个核心的概念。
其中之一是关系模型。
关系模型定义了数据如何以关系的形式表示。
在这个模型中,数据被组织成二维的表格,每一行代表一个实体的实例,每一列则代表实体的一个属性。
比如,在一个学生信息表中,一行可能代表一个学生,列则可能包括学生的学号、姓名、年龄、性别等属性。
另一个重要概念是关系的完整性约束。
这就像是给数据设定的规则,确保数据的准确性和一致性。
完整性约束包括实体完整性、参照完整性和用户定义的完整性。
实体完整性要求主键的值不能为空且唯一,主键就像是每个实体的身份证号,用于唯一标识一行数据。
参照完整性则规定了表之间的关联关系不能被破坏。
比如,在学生选课表中,课程号必须是在课程表中已经存在的合法课程号。
关系代数是关系数据库理论中的重要运算工具。
它包括选择、投影、连接、并、交、差等操作。
通过这些操作,我们可以从数据库中提取、组合和处理我们需要的数据。
例如,选择操作可以根据特定的条件筛选出符合要求的数据行,投影操作则可以从表格中选取特定的列。
函数依赖也是关系数据库理论中的关键概念。
它描述了属性之间的关系。
比如,如果知道一个人的学号,就能唯一确定他的姓名,那么就可以说学号函数决定姓名。
函数依赖的存在可能导致数据冗余和更新异常等问题。
为了解决这些问题,我们需要对关系模式进行规范化。
规范化是将关系模式逐步优化,减少数据冗余和异常的过程。
常见的规范化形式有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
第一范式要求每个属性都是不可再分的原子值。
关系数据库理论
2 一致性
设计关系数据库时要保持数据的一致性和正确性。
3 可拓展性
设计具有良好拓展性的数据库系统,以应对未来业务需求的增长。
关系操作和查询语言
关系操作
• 选择:根据特定条件筛选数据 • 投影:选择指定属性的数据 • 连接:根据关联条件将多个表连接在一起 • 并、交、差:对两个关系进行并集、交集或
关系数据库的应用领域和案例
企业管理
关系数据库广泛应用于企业管理系统、人力资 源管理、财务管理等领域。
科学研究
科学研究领域使用关系数据库来存储和处理实 验数据、测量结果等。
电子商务
关系数据库用于电子商务平台的订单管理、库 存管理、支付处理等。
社交网络
关系数据库支持社交网络平台的用户信息管理、 好友关系处理等功能。
关系数据库管理系统的架构
数据库服务器
数据库服务器是关系数据库管理 系统的核心,负责存储和管理数 据。
数据库客户端
数据库客户端提供用户界面和交 互功能,通过它可以访问和操作 数据库。
数据库管理员
数据库管理员负责维护和管理数 据库系统,包括性能调优、备份 恢复、安全管理等。
关系数据库的设计原则
1 规范化
关系数据库的基本特征
关系数据库具有数据的一致 性、完整性、可靠性和高效 性等特征,确保数据的准确 性和可信性。
关系模型的基本概念
1
关系模式和关系实例
2
关系模式描述表结构,而关系实例则是具
体的数据。
3
关系模型的属性
关系模型的属性描述数据的特征和属性, 包括主键、外键、约束等。
关系操作
关系操作包括选择、投影、连接、并、交、 差等操作,用于查询和操作关系数据。
373-第6章 关系数据库理论
证: 设Y X U
对R <U,F> 的任一关系r中的任意两个元组t,s:
若t[X]=s[X],由于Y X,有t[y]=s[y], 所以X→Y成立. 自反律得证
定理6.l (续)
(2)增广律: 若X→Y为F所蕴含,且Z U,则XZ→YZ 为
引理6.1保证了F变换前后的等价性。
极小化过程(续)
(2)逐一检查F中各函数依赖FDi:X→A, 令G=F-{X→A}, 若AXG+, 则从F中去掉此函数依赖。
由于F与G =F-{X→A}等价的充要条件是 AXG+ 因此F变换前后是等价的。
极小化过程(续)
(3)逐一取出F中各函数依赖FDi:X→A, 设X=B1B2…Bm, 逐一考查Bi (i=l,2,…,m), 若A (X-Bi )F+ ,
函数依赖集等价
要判定F G+,只须逐一对F中的函数依 赖X→Y,考察 Y 是否属于XG++ 就行了。 因此引理6.3 给出了判断两个函数依赖集 等价的可行算法。
6. 最小依赖集
定义6.15 如果函数依赖集F满足下列条件,则 称F为一个极小函数依赖集。亦称为最小依赖 集或最小覆盖。 (1) F中任一函数依赖的右部仅含有一个属性。 (2) F中不存在这样的函数依赖X→A,使得F与
解 设X(0)=AB; (1)计算X(1): 逐一的扫描F集合中各个函数依赖,
找左部为A,B或AB的函数依赖。得到两个: AB→C,B→D。
于是X(1)=AB∪CD=ABCD。
函数依赖闭包
(2)因为X(0)≠ X(1) ,所以再找出左部为ABCD 子集的那些函数依赖,又得到AB→C,B→D, C→E,AC→B, 于是X(2)=X(1)∪BCDE=ABCDE。
第6章关系数据库规范化理论
·包含在任一候选码中的属性,叫做主属性(Prime Attribute);
第6章 关系数据库规范化理论
· 不包含在任何码中的属性称为非主属性 (Nonprime Attribute)或非码属性(Non―key Attribute);
第6章 关系数据库规范化理论
2. 插入与删除异常 无法插入某部分信息或删除掉不应删除的信息称 为插入或删除异常。
例如,9级工资为660元的信息无法插入表。 因为该 表的码是姓名,而目前无职工工资级别为9级,表中不能 插入码为空值的记录。 即在插入一行时,此关系模式强 迫同时增加关于两个实体的数据。 又如,要删除姓名为 C的职工记录时,又将7级工资的信息一起删去了。 即在 删除一行时,删除了关于两个实体的数据。
属性间的联系可分为以下三类: 1. 一对一关系(1∶1) 以职工模式为例: 职工(职工号,姓名,职称,部 门),如果该企业(或单位)中职工无重名,则属性职工 号与姓名之间是1∶1关系。 一个职工号唯一地决定一 个姓名,一个姓名也可决定唯一的职工号。 设X、 Y是关系R的两个属性(集)。 如果对于X 中的任一具体值,Y中至多有一个值与之对应,且反之亦 然,则称X、 Y两属性间是一对一关系。
是唯一的。 对表 6 ― 4、 表 6 ― 5分别进行横向和纵 向展开,可分别转化为如表 6 ― 6、 表 6 ― 7 所示的符 合1NF的关系。
第6章 关系数据库规范化理论
6.1 关系规范化的作用
所谓规范化,就是用形式更为简洁、 结构更加规范 的关系模式取代原有关系的过程。
例 有三个属性的工资表(姓名,级别,工资)关系模 式。 对应此模式建立的表如表 6 ― 1 所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
t1[X]=t2[X]可以推导出t1[Y]=t2[Y],则称X函数决定Y,或Y函数
依赖于X,记为X→Y。
6.1.2 为什么要讨论函数依赖
数据冗余问题 数据更新问题
存在什么问题?
数据插入问题
数据删除问题
如何将“坏”的关系 模式转换成“好”的 关系模式?
术语:非平凡函数依赖、平凡函数依赖 如果X→Y,但Y不包含于X,则称X→Y 是非平凡的函数依赖。
如何对关系规范化,满足3NF或BCNF?
找出所有的函数依赖
每个新的关系模式仅包含一个函数依赖,决定因素作为该 关系模式的主关键字
以表6-1的“选课”关系为例
已知:U={学号, 课程号, 课程名, 责任教师, 职称, 考试成绩} 具体分解过程:
(1)找出所有的函数依赖:
F={(学号,课程号)考试成绩, 课程号课程名, 课程号责 任教师, 责任教师职称} 按相同左部进行分组得到如下结果: F1={(学号,课程号)考试成绩}
不满足第二范式 因为存在部分函数依赖
存储冗余、插入异常、更新异常、 删除异常等现象是否还存在呢?
把“选课”关系分解为如下“选课”和“课程”两个关系:
选课(学号, 课程号, 考试成绩) 课程(课程号, 课程名, 责任教师, 职称)
第三范式
如果R(U,F) ↔2NF,并且所有非主属性都不传递依赖于 关键字,则R(U,F) ↔3NF。
6.2 模式分解
“坏”的关系模式
“好”的关系模式
6.2.1 模式分解的准则
模式分解具有无损连接性;
无损连接是指分解后的关系通过自然连接可以恢复成原来的
关系。
模式分解能够保持函数依赖。
保持函数依赖分解是指在模式的分解过程中,函数依赖不能
丢失的特性,即模式分解不能破坏原来的语义。
6.2.2 模式分解举例
规范化程度可以有多个不同的级别。 规范化程度过低的关系不一定能够很好地描述现实世界,
可能会存在插入异常、删除异常、修改复杂、数据冗余等
问题。
一个低一级范式的关系模式,通过模式分解可以转换为若
干个高一级范式的关系模式集合,这种过程就叫关系模式
的规范化。
规范化总结(2/3)
关系模式规范化的基本步骤
6.3 关系规范化
目的是要设计“好的”关系数据库模式。
关系模式分为:
第一范式(1NF) 第二范式(2NF)
低
第三范式(3NF)
BC范式
(BCNF) (4NF) (5NF)
规范化程度
第四范式 第五范式
高
第一范式
每个关系模式都应满足最低要求:所有分量都必须是不可
分的最小数据项,并把其称为第一范式(1NF)关系。
给出以下几组数据
第一组数据假设教师T1负责课程C1、C2、C3,并且C1课程使用教室 M1和M4等: T1 C1—M1, M4 C2—M3, M6 C3—M2, M5, M7 第二组数据假设教师T2负责课程C4、C5,并且C4课程使用教室M1、 M3和M4等: T2 C4—M1, M3, M4 C5—M2, M6 第三组数据假设教师T3负责课程C6、C7,并且C6课程使用教室M2 和M3等: T3 C6—M2, M3 C7—M4
如:(学号,课程号)→成绩 如:(学号,学院)→学院
非平凡依赖 平凡依赖
举例:
关系模式:学生(学号,姓名,年龄)
(学号,姓名)→姓名 平凡 函数依赖 学号→姓名 非平凡 函数依赖
术语:不函数依赖于
如果Y不函数依赖于X,则记作X 如学号不函数依赖于性别, 则记作性别 学号。 Y。
术语:决定因素
如果X→Y,则X称作决定因素。 如学号→学院,则学号称作决定因素
将这些数据排列成关系?
是否存在操 作异常现象?
原因:存在一 个主属性对非 主属性的函数 依赖(课程→ 教师)
BC范式定义:
关系模式R(U,F) ↔1NF,X→Y是F上的任意函数 f 依赖,并且Y X,X U,则R(U,F) ↔BCNF。
换句话说,如果R(U,F)中的每个函数依赖的左部都是 关键字(或所有的决定因素都是关键字),则R(U,F) ↔BCNF。 也可以说,如果R(U,F) ↔3NF,并且不存在主属性对 非主属性的函数依赖,则R(U,F) ↔BCNF。
例:院系(编号,名称,负责人,地点)
有函数依赖:
编号→名称(名称函数依赖于编号)
编号→负责人(负责人函数依赖于编号)
名称→地点(地点函数依赖于名称) 名称→编号(编号函数依赖于名称) ……
函数依赖的严格形式化定义:
设有关系模式R(A1,A2,…,An),X和Y均为{A1,A2,…,An}的子
集,r是R的任一具体关系,t1、t2是r中的任意两个元组;如果由
关系模式
用U表示关系模式R的属性全集,即 U={A1,A2,…,An},用F表示关系模式R上的函数 依赖集,则关系模式R可表示为R(U,F)。
如U={编号,名称,负责人,地点} F={编号→负责人,编号→地点, 编号→名称,名称→编号} 则R(U,F)表示院系关系
术语:主属性、非主属性
如果K是关系模式R(U,F)的任一候选关键
1NF ↓ 消除非主属性对码的部分函数依赖 2NF ↓ 消除非主属性对码的传递函数依赖 3NF ↓ 消除主属性对码的部分和传递函数依赖 BCNF ↓ 消除非平凡且非函数依赖的多值依赖 4NF
规范化总结(3/3)
规范化的基本思想
消除不合适的数据依赖,各关系模式达到某种程度的
“分离”。
所谓规范化实质上是概念的单一化:让一个关系描述一
第三范式
例如:
已知关系模式 R(A,B,C)中
存在B →C 则此关系模式一定满足?NF
2
第三范式
例如:
已知关系模式 R(A,B,C)中
不存在B →C 和C →B 则此关系模式一定满足?NF
3
第三范式
例如: 已知关系模式 R(A,B,C) 则此关系模式一定满足?NF
3 特殊情况
第三范式
非规范化表格和规范化表格
第二范式
如果R(U,F) ↔1NF,并且R中的每个非主属性都完全函数 依赖于关键字,则R(U,F) ↔2NF。
第二范式
判断关系模式是否满足2NF的方法?
主关键字为单个属性时:一定为2NF 主关键字为多个属性时:如果每个非主属性组都完全依赖于主关
键字,则为果XK,则X 称为主属性;否则称为非主属性。 例如:选课(学号,课程号,成绩) 因为(学号,课程号)是选课关系的关键 字,所以学号和课程号均是主属性,而成 绩为非主属性。
术语:函数等价
如果X→Y,并且Y→X,则可记作X←→Y, 这时X和Y可以称做函数等价。 如在院系关系上: 编号→名称,名称→编号 所以在院系关系上编号和名称可以称作函数 等价。
第6章 关系数据库理论
问题
关系模式(relational model)的“好”与“坏”
设计好的关系模式
学习内容
函数依赖(Functional Dependency)
模式分解 关系规范化 讨论什么样的关系是“坏”的关系,如何将“坏”的关 系转换为“好”的关系
学习目标
理解函数依赖及其相应的概念和术语;
为了解决操作异常现象如何进行分解?
任何分解都会破坏函数依赖:
(教师,教室)课程
结论:不将3NF分解成BCNF!
BC范式是判断一个关系规范化程度的准则,如果一个关系
是3NF但不是BCNF,此时也不再进行分解,而是要注意可
能会产生的操作异常现象。
如何解决? 使用触发器如何?
6.3.5 规范化算法(略)
存在操作异常吗?
把表6-6所示意的课程关系分解成如下两个关系:
课程(课程号, 课程名, 责任教师)
教师(责任教师, 职称)
满足3NF么?
操作异常还存在吗?
6.3.4 BC范式
第三范式实际上已经解决了大部分操作异常现象,但是有
些关系模式可能还会出现这样或者那样的问题。
假设有如下关系模式:R(教师, 教室, 课程)
设有关系模式R(U,F),U={课程,教师,学院},F={课程→教师, 教师→学院},从F中可以看出,一门课程只能由一名教师负责, 一名教师只能属于一个学院。设有如表6-2所示的关系实例r,判 断如下的三个分解是否满足无损连接和保持函数依赖的特性:
ρ1={R1(课程,Φ),R2(教师, Φ),R3(学院, Φ)} ρ2={ R1({课程, 教师},{ 课程→教师 }), R2({课程, 学院},{ 课程→学院 })} ρ3={ R1({课程, 教师},{ 课程→教师 }), R2({教师, 学院},{ 教师→学院 })}
个概念、一个实体或者实体间的一种联系。若多于一个 概念就把它“分离”出去。
不能说规范化程度越高的关系模式就越好,上面的规范
化步骤可以在其中任何一步终止。
在设计数据库模式结构时,必须对现实世界的实际情况
和用户应用需求作进一步分析,确定一个合适的、能够 反映现实世界的模式。
掌握模式分解的准则; 理解关系范式(Normal Form)的定义,掌握关系规范化 的方法。
6.1 函数依赖(Functional Dependency)
Y=f(X) Y=X+1
Y=sin(X)
函数
Y=X2+2X+1
省=f(城市)
姓名=f(学号)
函数依赖的直观定义:
如果有一个关系模式R(A1,A2,…,An),X和Y为 {A1,A2,…,An}的子集,那么对于关系R中的任意一个X值, 都只有一个Y值与之对应,则称X函数决定Y,或Y函数依 赖于X。