多值依赖与4NF
关系数据理论课后答案
关系数据理论课后答案第五章关系数据理论习题解答和解析1.理解并给出下列术语的定义:函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All-key)、1NF、2NF、3NF、BCNF、多值依赖、4NF。
解析:解答本题不能仅仅把《概论》上的定义写下来。
关键是真正理解和运用这些概念。
答:函数依赖:设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。
对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称"X函数确定Y"或"Y函数依赖于X",记作X→Y。
解析:(1)函数依赖是最基本的一种数据依赖,也是最重要的一种数据依赖。
(2)函数依赖是属性之间的一种联系,体现在属性值是否相等。
由上面的定义可以知道,如果X→Y,则r中任意两个元组,若它们在X上的属性值相同,那么在Y上的属性值一定也相同。
(3)要从属性间实际存在的语义来确定他们之间的函数依赖,即函数依赖反映了(描述了)现实世界的一种语义。
(4)函数依赖不是指关系模式R在某个时刻的关系(值)满足的约束条件,而是指R任何时刻的一切关系均要满足的约束条件。
答:完全函数依赖、部分函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X'Y,则称Y对X完全函数依赖,记作:若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作:?→Z,则称Z对X传递函数依赖。
传递依赖:在R(U)中,如果X→Y,(Y候选码、主码:设K为R<u,f>中的属性或属性组合,若K→U(完全依赖)则K为R的候选码(Candidate key)。
若候选码多于一个,则选运其中的一个为主码(Pdmary key)。
解析:1)这里我们用函数依赖来严格定义码的概念。
在第二章中我们只是描述性地定义码(可以复习若关系中的某一属性组的值能惟一地标识一个元组,则称该属性组为候选码(Candidate key)。
关系数据库范式
关系数据库范式关系数据库范式是指在关系数据库中,为了避免数据冗余和数据不一致性而设计的一种规范化方法。
范式分为一般范式和高级范式,一般范式包括第一范式、第二范式和第三范式,高级范式包括BC 范式和第四范式。
第一范式(1NF)第一范式是指关系模式中的所有属性都是原子性的,即不可再分解。
例如,一个学生的信息包括姓名、性别、年龄、地址等,这些属性都是原子性的,不可再分解。
如果将地址拆分成省、市、区、街道等多个属性,则不符合第一范式。
第二范式(2NF)第二范式是指关系模式中的非主属性必须完全依赖于主键,而不是依赖于主键的一部分。
例如,一个订单的信息包括订单号、商品编号、商品名称、商品单价、商品数量等,其中商品名称、商品单价、商品数量都依赖于商品编号,而不是订单号。
因此,应该将商品编号作为主键,将商品名称、商品单价、商品数量作为非主属性。
第三范式(3NF)第三范式是指关系模式中的非主属性不应该存在传递依赖关系。
传递依赖关系是指非主属性依赖于其他非主属性,而不是直接依赖于主键。
例如,一个学生的信息包括学号、姓名、班级、学院、学院地址等,其中学院地址依赖于学院,而不是直接依赖于学号。
因此,应该将学院作为一个独立的关系,与学生信息关系进行关联。
BC范式BC范式是指关系模式中的所有非主属性都必须依赖于候选键,而不是依赖于主键。
候选键是指可以唯一标识一个元组的属性集合。
例如,一个订单的信息包括订单号、商品编号、商品名称、商品单价、商品数量等,其中商品名称、商品单价、商品数量都依赖于商品编号,而商品编号不是主键,而是候选键。
因此,应该将商品编号作为主键,将商品名称、商品单价、商品数量作为非主属性。
第四范式(4NF)第四范式是指关系模式中的多值依赖关系必须被消除。
多值依赖关系是指一个关系模式中的某些属性可以有多个取值,而这些属性之间存在依赖关系。
例如,一个学生的信息包括学号、姓名、选修课程、成绩等,其中选修课程和成绩之间存在多值依赖关系,即一个学生可以选修多门课程,每门课程有一个成绩。
4nf的示例
4nf的示例
以一个示例说明第四范式(4NF)的概念。
假设有一个关系模式WSC(W, S, C),其中W表示仓库,S表示保管员,C表示商品。
每个仓库有若干保管员,有若干种商品。
每个保管员保管所在仓库的所有商品,每种商品被所有保管员保管。
WSC的键为(W, S, C),在WSC中存在非平凡的多值依赖:W→→S,W→→C,而W不是键,因此WSC不是4NF。
可以用分解法对其进行处理,把WSC分解为两个表:WS(W, S),WC (W, C)。
在WS中存在多值依赖W→→S,但这是平凡的多值依赖,所以WS属于第四范式。
同理,WC也属于4NF。
这样,通过消除非平凡且非函数依赖的多值依赖,4NF在3NF的基础上进一步规范化了数据库的设计。
如需更多关于4NF的信息,建议咨询计算机领域专业人士或查阅数据库原理相关书籍。
数据库原理重点总结
数据库原理重点总结1.试述数据模型的概念、数据模型的作用和数据模型的三个要素。
2.定义并解释概念模型中以下术语:实体,实体型,实体集,属性,码,实体联系图。
3.试述关系模型的三个组成部分。
4.试述关系模型的完整性规则。
在参考完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?5.数据库安全性和计算机系统的安全性有什么关系?6.试述实现数据库安全性控制的常用方法和技术。
7.什么就是数据库中的独立自主存取控制方法和强制性存取控制方法?8.sql语言中提供了哪些数据控制(自主存取控制)的语句?举例说明它们的使用方法。
9.什么是数据库的完整性?10.数据库的完整性概念与数据库的安全性概念存有什么区别和联系?11.dbms的完整性掌控机制应当具备哪些功能?12.理解并给出下列术语的定义:函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(all-key)、1nf、znf、3nf、bcnf、多值依赖、4nf。
13.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
14.在一个订货系统的数据库中,存有顾客、货物和订货单的信息。
15.试述数据库设计过程及各个阶段上的设计描述。
16.什么是数据库的完整性约束条件?可分为哪几类?17.下面的结论哪些就是恰当的?哪些就是错误的?对于错误的恳请得出一个反例表明之。
18.试述数据库概念结构设计的重要性和设计步骤。
19.什么就是数据库的逻辑结构设计?试述其设计步骤。
20.试述查阅优化的通常准则。
21.试述查阅优化的通常步骤。
23.数据库恢复的基本技术有哪些?24.mammalian操作方式可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?1.试述数据模型的概念、数据模型的作用和数据模型的三个要素。
【请问】数据模型就是数据库中用以对现实世界展开抽象化的工具,就是数据库中用作提供更多信息则表示和操作方式手段的形式构架。
数据模型就是严苛定义的概念的子集,这些概念准确叙述了系统的静态特性、动态特性和完整性约束条件。
主范式及其应用
主范式及其应用什么是主范式主范式是数据库设计中的一个重要概念,用于保证数据库中的数据的一致性和完整性。
它是规定了数据库中的关系表的结构和约束条件,确保数据可以正确地存储和查询。
第一范式第一范式(1NF)是主范式中的基本要求,它可以保证每个关系表中的属性是原子的,即不可再分的。
一个满足第一范式的表中的每个属性都应该是不可再分的,不可重复的。
第二范式第二范式(2NF)要求关系表中的非主键属性必须完全依赖于所有的候选键,而不仅仅是其中的一部分。
如果一个表中的非主键属性只依赖于部分候选键,那么就无法满足第二范式。
第三范式第三范式(3NF)要求关系表中的非主键属性不依赖于其他非主键属性。
如果一个表中的非主键属性存在传递依赖,即依赖其他非主键属性而不是直接依赖主键,那么就无法满足第三范式。
第四范式第四范式(4NF)要求关系表中不存在多值依赖。
多值依赖指的是一个属性依赖于关系表中其他非主键属性的一个或多个集合。
第四范式通过设计合适的关系表结构,消除了这种多值依赖。
第五范式第五范式(5NF)要求关系表中不存在联合依赖。
联合依赖指的是一个属性依赖于多个候选键的组合而不是单独的候选键。
第五范式通过设计合适的关系表结构,消除了这种联合依赖。
主范式的应用数据库设计主范式在数据库设计中起着重要的作用。
通过遵循主范式的要求来设计数据库表结构,可以保证数据的一致性和完整性。
当数据库表符合主范式时,数据的存储和查询将更加高效和可靠。
数据库优化主范式的应用还可以帮助进行数据库的优化。
通过合理地设计数据库表结构,避免冗余数据和不必要的关联,可以提高数据库的性能和查询效率。
数据一致性维护主范式的应用可以帮助维护数据的一致性。
当数据库表符合主范式时,数据的插入、更新和删除操作将更加容易和安全,可以避免数据的冗余和不一致。
数据完整性保证主范式的应用也能够保证数据的完整性。
通过严格遵循主范式的约束条件,可以确保数据库中的每个属性都是原子的,不可再分的,从而避免了数据的丢失和破坏。
数据库 第四范式
数据库第四范式
数据库第四范式(4NF)是关系数据库设计中的一种范式,它建立在第三范式(3NF)的基础上。
第三范式要求所有的非关键字列都必须和所有的超键直接依赖,但是在某些情况下,数据库设计可能会出现类似于多对多的关系,使得依赖关系的复杂度增加。
此时,第四范式就可以帮助我们通过消除多值依赖和联合依赖等复杂关系,从而减少冗余数据,提高数据库的性能和查询效率。
在第四范式中,我们可以定义一个关系模式R(A,B,C,D),其中A是关系模式的主键(也可以是超键)。
若在该关系模式中存在以下两种情况之一,则该关系模式R符合第四范式要求:
1. 对于每个非主属性B,如果它与关系的其他非主属性C存在多值依赖,那么B可以被拆分成两个关系模式,其中一个包含属性B和A,另一个包含属性C和A。
2. 对于每个非主属性B和C,如果它们之间存在联合依赖,那么B和C可以被拆分成两个关系模式,其中一个包含属性B、A和C,另一个包含属性C和A。
通过将一个大的关系模式分解成多个小的关系模式,我们可以消除重
复的数据,提高数据库的性能和查询效率。
同时,第四范式也可以保证数据库的数据一致性和完整性,减少数据冗余和异常,避免数据的不一致性和混乱。
总之,数据库第四范式是关系数据库设计中的一种重要的范式,它可以有效地提高数据库的性能和查询效率,同时也可以保证数据库的数据一致性和完整性。
然而,在实际应用中,我们需要根据具体的业务需求和数据特点来选择不同的范式和设计方案,以达到最优的数据库设计效果。
第四章 数据库规范化理论(第二节)
其中存在非主属性ROOM#对码的传递依赖, 即:
C#→LNAME, LNAME→ROOM# 因此COURSE不属于3NF。
将COURSE分解为:COURSE1(C#, TITLE, LNAME) 和 LECTURE(LNAME, ROOM#),
则关系模式COURSE1和LECTURE中都没有传递函数依赖,
因此 COURSE1 和 LECTURE 都属于3NF。
16
第四章 数据库规范化理论
第二节、 范式理论
三、 第三范式(3NF)
至此,关系模式REPORT分解为下列3个属于3NF的一组关系模式:
REPORT1 (S#, C#, MARKS) COURSE1 (C#, TITLE, LNAME) LECTURE (LNAME, ROOM#)
非第一范式的例子如表4-4,可以转换为第一范式如表4-5。
表4-4
研究生
导师
专业
第一个研究生 第二个研究生
表4-5
导师 专业 第一个研究生 第二个研究生
几乎所有的商用关系DBMS都要求关系为第一范式
4
第四章 数据库规范化理论
第二节、 范式理论
一、 第一范式(1NF)
如果关系仅仅满足第一范式的条件是不够的,可能会存在更新异常。
定义:关系模式R∈1NF,若X→Y,且Y⊈ X 时,X必含有候选码,则R∈BCNF。
即 在关系模式R中,若R的每一个决定因素都包含候选码,则R∈BCNF。
由BCNF的定义可知,一个满足BCNF的关系模式有如下特性:
● 每个非主属性对每个码都是完全函数依赖;
● 所有的主属性对每一个不包含它的码,也是完全函数依赖;
大学数据库-第7章习题解答
〖7.2〗 在关系模式选课(学号, 课程号, 成绩)中,“学号→→课程号”正确吗?为什么?
答: 正确。因为学号能够多值决定课程号,且除了学号和课程号外还有成绩属性,它不是
平凡的多值依赖。
〖7.3〗 设有关系模式 R(A, B, C),数据依赖集 F={AB→C, C→→A},R 属于第几范式?为
什么?
〖7.6〗 在分解具有无损分解时,系统具有什么特点? 答:在分解具有无损分解时,系统具有下列特点:对关系模式 R 中满足函数依赖集 FD 的每
一个关系 r,都有 r=R1(r)⋈R2(r)⋈ …⋈Rk(r),即 r=mρ(r)。
〖7.7〗 试述查询优化的一般步骤。
答:① 把查询转换成语法树表示;② 把语法树转换成标准(优化)形式;③ 选择低层的
(7)若 R.B→R.A,R.C→R.A,则 R.(B, C)→R.A。
(8)若 R.(B, C)→R.A,则 R.B→R.A,R.C→R.A。
答:① 正确。② 正确。③ 正确。④ 正确。⑤ 正确。⑥ 正确。⑦ 正确。⑧ 不正确。例
如,(学号,课程号)→成绩,则不存在:学号→成绩,课程号→成绩。
〖7.5〗 试证明“3NF 的模式也一定是 2NF 模式”这个结论。
第 7 章习题解答
〖7.1〗 给出下列术语的定义,并加以理解。
函数依赖,部分函数依赖,完全函数依赖,传递函数依赖,候选关键字,主关键字,全
关键字,1NF,2NF,3NF,BCNF,多值依赖,4NF,连接依赖,5NF。
答:
函数依赖:设 R〈U〉是属性集 U 上的关系模式,X、Y 是 U 的子集。若对于 R〈U〉的
描述系的属性有:系名、系号、系办公室地点、人数;
描述学会的属性有:学会名、成立年份、地点、人数、学生参加某会有一个入会年
数据库设计的三大范式、BCNF、4NF
数据库设计的三⼤范式、BCNF、4NF⼀、理解的范式需要理解⼏个基本概念:码:表中可以唯⼀确定⼀个元组的某个属性(或者属性组),如果这样的码有不⽌⼀个,那么⼤家都叫候选码,我们从候选码中挑⼀个出来做⽼⼤,它就叫主码。
相当于键值的意思。
主属性:⼀个属性只要在任何⼀个候选码中出现过,这个属性就是主属性。
⾮主属性:与上⾯相反,没有在任何候选码中出现过,这个属性就是⾮主属性。
外码:⼀个属性(或属性组),它不是码,但是它别的表的码,它就是外码。
⼆、范式详解为了建⽴冗余较⼩、结构合理的数据库,设计数据库时必须遵循⼀定的规则。
在关系型数据库中这种规则就称为范式。
范式是符合某⼀种设计要求的总结。
要想设计⼀个结构合理的关系型数据库,必须满⾜⼀定的范式。
在实际开发中最为常见的设计范式有三个:1.第⼀范式(确保每列保持原⼦性)第⼀范式是最基本的范式。
如果数据库表中的所有字段值都是不可分解的原⼦值,就说明该数据库表满⾜了第⼀范式。
第⼀范式的合理遵循需要根据的实际需求来定。
⽐如某些数据库系统中需要⽤到“地址”这个属性,本来直接将“地址”属性设计成⼀个数据库表的字段就⾏。
但是如果系统经常会访问“地址”属性中的“城市”部分,那么就⾮要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进⾏存储,这样在对地址中某⼀部分操作的时候将⾮常⽅便。
这样设计才算满⾜了数据库的第⼀范式,如下表所⽰。
上表所⽰的⽤户信息遵循了第⼀范式的要求,这样在对⽤户使⽤城市进⾏分类的时候就⾮常⽅便,也提⾼了数据库的性能。
2.第⼆范式(确保表中的每列都和主键相关)第⼆范式在第⼀范式的基础之上更进⼀层。
第⼆范式需要确保数据库表中的每⼀列都和主键相关,⽽不能只与主键的某⼀部分相关(主要针对联合主键⽽⾔)。
也就是说在⼀个数据库表中,⼀个表中只能保存⼀种数据,不可以把多种数据保存在同⼀张数据库表中。
⽐如要设计⼀个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所⽰。
数据库四范式
数据库四范式数据库四范式是指在关系型数据库中对数据进行规范化的四个级别。
规范化是指通过分解数据库中的数据,消除数据冗余和数据依赖,提高数据的完整性和一致性。
第一范式(1NF):保证每个属性都是原子的,即不可再分。
这样可以避免数据的重复和冗余。
例如,一个学生表中的“姓名”属性应该只包含一个学生的姓名,而不是多个学生的姓名。
此外,每个属性的值都应该是唯一的,不重复的。
第二范式(2NF):在满足第一范式的基础上,要求非主键属性完全依赖于主键。
也就是说,每个非主键属性都与主键相关,而不是与其他非主键属性相关。
例如,一个订单表中的“商品名称”属性应该与订单号相关,而不是与其他属性相关,如订单的日期或客户名称。
第三范式(3NF):在满足第二范式的基础上,要求消除传递依赖。
传递依赖是指非主键属性依赖于其他非主键属性。
为了消除传递依赖,可以将非主键属性提取到单独的表中,并与主键相关联。
例如,一个员工表中的“部门名称”属性可以提取到一个独立的部门表中,与部门编号相关联。
第四范式(4NF):在满足第三范式的基础上,要求消除多值依赖。
多值依赖是指一个关系中的属性依赖于其他属性的多个值。
为了消除多值依赖,可以将多值属性提取到单独的表中,并与主键相关联。
例如,一个学生表中的“课程成绩”属性可以提取到一个独立的成绩表中,与学生的学号相关联。
通过将数据规范化到四范式,可以提高数据库的性能和数据的完整性。
规范化可以减少数据的冗余和重复,确保数据的一致性和准确性。
此外,规范化还可以简化数据库的维护和查询操作,提高数据库的可扩展性和可靠性。
然而,过度规范化也会带来一些问题。
例如,在进行查询时,可能需要多次连接多个表,导致查询性能下降。
因此,在进行数据库设计时,需要根据实际需求和业务逻辑来进行规范化,避免过度规范化。
数据库四范式是关系型数据库中对数据进行规范化的四个级别。
通过规范化,可以提高数据库的性能和数据的完整性,减少数据的冗余和重复。
数据库 第四范式
数据库第四范式一、什么是数据库第四范式1.1 第四范式的概念在数据库理论中,关系数据库设计的规范是由不同的范式来定义的,分别包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及第四范式(4NF)。
第四范式是在前三个范式的基础上进行的进一步优化和规范。
1.2 第四范式的目标第四范式的目标是要避免数据冗余和数据传递依赖,以提高数据库的完整性和性能。
它通过对原始数据表的分解,消除多值依赖和联合依赖,使得数据处理更加高效和精确。
二、第四范式的优势2.1 数据库结构的优化第四范式的设计可以消除冗余数据和多值依赖,对数据库结构进行了优化。
通过彻底解决各种数据依赖关系,可以减少数据存储空间,提高数据库的性能和响应速度。
2.2 数据一致性的保障第四范式的设计可以提高数据一致性的保障。
通过将关联的数据分离到不同的表中,可以确保数据的一致性和完整性。
任何对数据的更新操作都会被正确地应用到相应的表中,避免了数据冲突和不一致的情况。
2.3 数据处理的准确性第四范式的设计可以提高数据处理的准确性。
通过消除冗余和依赖,可以避免数据传递错误导致的数据处理错误。
数据的更新和查询操作都可以更加精确地进行,减少了数据处理的错误率。
三、第四范式的实现方法3.1 分解表结构第四范式的实现方法之一是对原始表结构进行分解。
根据多值依赖和联合依赖的规则,将原始表拆分成多个表,并建立相应的关联关系。
通过分解表结构,可以消除数据冗余,提高数据库性能。
3.2 建立关联关系在拆分表结构的同时,还需要建立相应的关联关系。
通过主键和外键的关联,确保数据的一致性和完整性。
在进行数据更新和查询操作时,需要同时更新和查询相关的表,以保证数据的准确性。
3.3 设计联合查询语句第四范式的实现还需要设计相应的联合查询语句。
通过联合查询可以将相关的表进行关联,并在查询时获取所需的数据。
联合查询语句的设计需要根据具体的业务需求和表关系来确定,以达到高效和准确的数据处理。
第7章 关系数据库的规范化理论与数据库的设计
关系数据库的规范化理论与数据库设计E.F.CODD提出的数据库规范化理论1.1“不好”的关系模式中存在的问题可能存在的问题:数据冗余更新异常插入异常删除异常数据依赖:是可以作为关系模式的取值的任何一个关系所必须满足的一种约束条件,是通过一个关系中各个元组的某些属性值之间的相等与否体现出来的相互关系。
数据依赖包括:函数依赖和多值依赖和其他1.2函数依赖1.21函数依赖的定义设R(A1,A2,……..An)是一个关系模式,X,Y是{A1,A2……..An}的子集,若只要关系r是关系模式R的可能取值,则r中不可能有两个元组在X中的属性值相等,而在Y中的属性值不相等,则称”X函数决定Y”或”Y函数依赖于X”,记做X→Y。
(ps:一些属性决定另一些属性称为函数决定)只能根据语义来判断。
相关的属性:若X->Y, 但Y不属于X, 则称X->Y为非平凡依赖,否则为平凡依赖。
若X->Y, 则称X为决定元素。
若X->Y,Y->X, 则记做X←>Y若Y不函数依赖于X, 记做X不函数决定Y在关系模式R中,如果X->Y,并且对于X的任意一个真子集X` 都有X` 不函数决定Y,则称Y对X完全函数依赖,记做X__f__Y若X->Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记做X__p___Y若X—>Y(Y不包含于X),Y不函数决定X,Y函数决定Z,则称Z 对X传递函数依赖。
把关系模式表示为R<U,F>,其中U是一组属性,F是属性组U上的一组数据依赖,当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系。
1.22 函数依赖的逻辑蕴含设R<U,F>是一个关系模式,X,Y是U中的属性组,若在R<U,F>的任何一个满足F中函数依赖的关系r上,都有函数依赖X->Y成立,则称F逻辑蕴含X->Y。
(ps:即是函数依赖组隐含决定的其他函数依赖关系)如关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体称作F的闭包,记做F+ .1.23 码设K为关系模式R<U,F>中的属性或属性组,若K->U在F闭包中,而找不到K 的任何一个真子集K` ,能使K`->U在F闭包中,则称K为关系模式R的候选码,当候选码多于一个时,选定其中一个做主码。
数据库简答题
第一章3、简述数据库系统的三级模式和两级映像的含义;答:从数据库管理系统的角度看,数据库系统的结构通常分为三级模式的总体结构,在这种模式下,形成了二级映像,实现了数据的独立性;其中三级模式结构指的是外模式、模式和内模式,二级映像指的是外模式/模式映像、模式/内模式映像;模式也称逻辑模式和概念模式,是数据库中全体数据逻辑结构和特征的描述,描述现实世界中的实体及其性质与联系,是所有用户的公共数据视图;外模式也称子模式或用户模式,它是用以描述用户看到或使用的数据的局部逻辑结构和特性的,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据;内模式也称存储模式,是整个数据库的最底层表示,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式;对于外模式/模式映像,当模式改变时,相应的外模式/模式映像作相应的改变,以使外模式保持不变,而应用程序是依据数据的外模式来编写的,外模式不变,应用程序就没必要修改,这保证了数据与程序的逻辑独立性;对于模式/内模式映像,当数据库的存储结构变了,模式/内模式映像会作相应的改变,以使模式保持不变,而模式不变,与模式没有直接联系的应用程序也不会改变,这保证了数据与程序的物理独立性;5、数据库管理系统的主要功能有哪些答:⑴、数据定义功能;⑵、数据操纵功能;⑶、数据组织、存取功能;⑷、数据库运行管理功能;⑸、数据库建立与维护功能第五章1、解释下列术语的含义:函数依赖、平凡函数依赖、非平凡函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、1NF、2NF、3NF、BCNF、多值依赖、4NF、最小函数依赖、函数依赖保持性、无损连接性;①、函数依赖:设RU是属性集U上的一个关系模式,X、Y是U的子集;若对于RU上的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X 函数决定Y”或“Y函数依赖X”,记作X→Y;②、平凡函数依赖:设RU是属性集U上的一个关系模式,X、Y是U的子集;若Y是X的子集,则称X→Y为平凡函数依赖;③、非平凡函数依赖:设RU是属性集U上的一个关系模式,X、Y是U的子集;如果X→Y,且Y∉X,则称X→Y为非平凡函数依赖;④、部分函数依赖:如果X→Y,但不完全函数依赖于X,则称Y对X部分函数依赖;⑤、完全函数依赖:在RU中,如果X→Y,并且对于X的任何一个真子集X’,都有Y函数不依赖于X’,则称Y完全函数依赖于X;⑥、传递函数依赖:在RU中,如果X→Y ,Y→Z,且Y∉X,X也不函数依赖于Y,则称Z传递函数依赖于X;⑦、1NF:如果关系模式R的所有属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式;⑧、2NF:如果关系模式R∈1NF,且每个非主属性都完全依赖于R的码,则称R属于第二范式;⑨、3NF:如果关系模式R∈2NF,且每个非主属性都不传递函数依赖于R的候选码,则称R属于第三范式;⑩、BCNF:如果关系模式R∈1NF,且对于所有的函数依赖X→YY∉X,决定因素X都包含了R的一个候选码,则称R属于BC范式;错误!、多值依赖:设RU是属性集U上的一个关系模式,X、Y、Z是U的子集,并且Z=U-X-Y;关系模式RU中多值依赖X→→Y成立,当且仅当对RU的任一关系r,给定的一对x,z值,有一组Y的值,这组值仅仅决定于x值而与z值无关;错误!、4NF:关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→YY∉X,X都含有码,则称R<U,F>∈4NF;错误!、最小函数依赖:函数依赖集F满足以下条件:a、F中的任何一个函数依赖的右部仅含有一个属性;b、F中不岑仔这样一个函数依赖X→A,使得F与F-{X→A }等价;c、F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A }∪{Z→A}与F等价;错误!、函数依赖保持性:设p={R1<U1,F1>,R2<U2,F2>,···,R n<U n,F n>}是关系模式R{U,F}上的一个分解;若∪Fi =F ,则称分解p具有函数依赖保持性;错误!、无损连接性:设p={R1<U1,F1>,R2<U2,F2>,···,R n<U n,F n>}是关系模式R{U,F}上的一个分解;若任何属于R{U,F}的关系r,令r1=πR1r,r2=πR2r,···,r n=πR n r,有r=r1∞r2∞···∞r n成立,则称分解p具有无损连接性;第六章3、简述聚集索引和非聚集索引的区别;答:汉语字典的正文本身就是一个聚集索引;比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部;如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”;也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容;正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”;如果您认识某个字,您可以快速地从自动中查到这个字;但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字;但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页;很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射;我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码;我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”;4、为什么一个数据文件只能有一个聚集索引答:由于一个数据表只能有一种实际的存储顺序,因此在一个数据表中只能建立一个聚集索引; 第七章1、请简要阐述一个数据库设计的几个阶段;答:①、需求分析阶段②、概念设计阶段③、逻辑设计阶段④、物理设计阶段⑤、数据库实现阶段⑥、数据库的运行与维护阶段第八章1、什么是数据库的安全性答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏;3、试述实现数据库安全性控制的常用方法和技术;答:实现数据库安全性控制的常用方法和技术有:①、用户标识和鉴别:数据库会对用户进行标识,系统内部记录所有合法用户的标识,每次用户要求进入系统时,由系统进行核对通过鉴定以确定用户的合法性;②、存取控制:通过用户权限定义和合法检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据;③、视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护;④、审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等;⑤、数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容;第九章1、简述事务的概念和事务的四个特性,并解释每一个性质由DBMS的哪个子系统实现,每一个性质对DBS有什么益处;事务的概念:事务是数据库应用中构成单一逻辑工作单元的操作集合事务的四个特性及实现与益处:①、事务的原子性:每个事务的所有操作要么被成功地执行,要么一个也不被执行;原子性是由DBMS的事务管理子系统实现的;事务的原子性保证了DBS的完整性;②、事务的一致性:一个事务的正确执行必须数据库从一个正确状态转换为另一个正确的状态;事务的一致性是由DBMS的完整性子系统实现的;事务的一致性保证数据库的完整性;③、事务的隔离性:多个并发事务之间不能相互干扰,同时并发不影响事务的执行;事务的隔离性是由DBMS的并发控制子系统实现的;隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样;④、事务的持久性:事务对数据库的更新必须是永久的;事务一旦提交,则永久改变数据库中的数据;持久性是由DBMS的恢复管理子系统实现的;持久性能保证DB具有可恢复性;2、并发操作可能会产生哪几类数据不一致性分别用什么方法可以避免各种不一致的情况①、丢失更新:采用一级封锁协议解决②、污读:采用二级封锁协议解决③、不可重读:采用三级封锁协议解决3、简述封锁的概念以及基本的封锁类型;封锁的概念:事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁,加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象;基本的封锁类型:①、排他锁②、共享锁4、什么是封锁协议简述不同级别的封锁协议的主要区别;封锁协议的定义:在运用X锁和S锁对数据对象加锁时,需要约定一些规则,这些规则为封锁协议主要区别:①、一级封锁协议:事务T在修改数据R之前必须先对其加排他锁,直到事务结束才释放;它防止了丢失更新问题,但不能保证可重读和不读“脏”数据;②、二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁;它防止丢失更新问题,也进一步防止读“脏”数据,但不能解决不可重读问题;③、三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放;它防止了丢失更新问题、读“脏”数据,以及不可重读问题;5、数据库恢复的基本原则是什么具体实现方法是什么基本原则:数据库的重复存储具体实现方法:①、转储和建立日志②、数据恢复6、什么是“脏”数据如何避免读取“脏”数据“脏”数据定义:不正确的临时值如何避免:采用二级封锁协议或者三级封锁协议7、什么是活锁试述活锁产生的原因及解决办法;活锁的定义:多个事务申请对数据R申请加锁,而系统随机地加锁,导致某些事务长等待活锁产生的原因:系统随机地加锁解决办法:采用“先来先服务”的策略预防活锁的发生8、什么是死锁试述死锁产生的原因及解决办法;答:死锁的定义:两个或两个以上的事务互相申请对方加锁对象的排它锁,造成了循环等待死锁产生的原因:系统中有两个或两个以上的事务都处于等待状态,并且每个事务都在等待其中另一个事务解除封锁,它才能继续执行下去,结果造成任何一个事务都无法继续执行,这样系统就进入了死锁状态;解决办法:①、死锁的预防:一次封锁法、顺序封锁法②、死锁的诊断与解除:超时法、等待图法③、选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务能继续运行下去;选择题部分DB指的是数据库DataBase,DBMS指的是数据库管理系统DataBase Management System,DBS指的是数据库系统DataBase System,DBA指的是数据库管理员Database Administrator,Data指的是数据; 由书中概念易得DBS数据库系统包括DBMS数据库管理系统,DBMS管理和控制DB数据库,而DB 载入、存储、重组与恢复Data数据;数据库系统的特点有:⑴、实现数据共享;⑵、减少数据冗余度;⑶、保持数据的一致性;⑷、数据的独立性;⑸、安全保密性;⑹、并发控制;⑺、故障恢复DB是长期储存在计算机内、有组织的、可共享的大量数据集合;DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问计算机软件、硬件和数据资源组成的系统;DBMS是把用户对数据的操作转化为对系统存储文件的操作,有效地实现数据库三级外模式、模式和内模式之间的转化;MIS指的是管理信息系统Management Information System,是一个以人为主导,利用计算机硬件、软件及其他办公设备进行信息的收集、传递、存贮、加工、维护和使用的系统;数据的物理独立性指的是内模式改变,模式即概念模式不变模式也称逻辑模式和概念模式,是数据库中全体数据逻辑结构和特征的描述,描述现实世界中的实体及其性质与联系,是所有用户的公共数据视图;外模式也称子模式或用户模式,它是用以描述用户看到或使用的数据的局部逻辑结构和特性的,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据;内模式也称存储模式,是整个数据库的最底层表示,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式;Armstrong公理系统:设关系模式R<U,F>,其中U为属性集,F是U上的一组函数依赖,则有如下推理规则:①、自反律:若属性集Y 包含于属性集X,属性集X 包含于U,则X→Y为F所蕴涵;②、增广律:若X→Y为F所蕴涵,且属性集Z 包含于属性集U,则XZ→YZ为F所蕴涵;③、传递律:若X→Y,Y→Z为F所蕴涵,则X →Z为F所蕴涵;根据以上三条推理规则又可推出下述三条推理规则:①、合并规则:若X→Y,X→Z,则X→YZ为F所蕴涵;②、伪传递律:若X→Y,WY→Z,则XW→Z为F所蕴涵;③、分解规则:若X→Y,Z包含于Y,则X→Z为F所蕴涵;多值依赖具有如下性质:①、对称性:若X→→Y,则X→→Z,其中Z=U-X-Y②、传递性:若X→→Y,Y→→Z,则X→→Z-Y③、合并性:若X→→Y,X→→Z,则X→→YZ④、分解性:若X→→Y,X→→Z,则X→→Y∩Z,X→→Z-Y,X→→Y-Z均成立⑤、函数依赖可看做多值依赖的特例;物理结构设计的工作主要包括以下几点:①、确定数据的存储结构②、设计合适的存取路径③、确定数据的存放位置④、确定系统配置属性冲突:属性值的类型、取值范围不一致;命名冲突:a、同名异义:不同意义的对象在不同的局部应用中具有相同的名字b、异义同名:同一意义的对象在不同的局部应用中具有不同的名字结构冲突:a、同一对象在不同的局部应用中具有不同的身份b、同一对象在不同的局部应用中对应的实体属性组成不完全相同c、实体之间的联系在不同的局部应用中具有不同的类型数据库系统安全性的主要技术和方法有以上几种:①、存取控制技术②、视图机制③、审计技术④、数据加密若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁关系的完整性有以下几条规则:⑴、实体完整性规则:若属性A是基本关系R的主码所包含的属性,则属性A不能取空值;注:主码不能为空,且主码整体取值也不空⑵、参照完整性规则:如果属性集K是关系模式R1的外键,同时K也是关系模式R2的属性,但不是R2的主键,那么K为R2的外键;在R2关系中,K的取值只允许有两种可能:①、空值;②、不为空时,等于R1关系中某个主键值;⑶、用户自定义的完整性规则:用户针对具体的数据约束,设置完整性规则;。
数据库1NF, 2NF, 3NF, 4NF, 5NF, BCNF的定义和区别
1NF, 2NF, 3NF, 4NF, 5NF, BCNF第一范式(1NF)无重复的列基本上现在的关系型数据库都会符合第一范式,不符合的也建立不了。
第二范式(2NF)属性完全依赖于主键要求数据库表中的每个实例或行必须可以被惟一地区分。
为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。
例如:员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。
这个惟一属性列被称为主关键字或主键、主码。
所以员工的其它信息都依赖于员工编号。
所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体第三范式(3NF)属性不依赖于其它非主属性要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。
那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。
如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。
简而言之,第三范式就是属性不依赖于其它非主属性。
修正的第三范式(BCNF)要求关系模型中所有的属性(包括主属性和非主属性)都不传递依赖于任何候选关键字。
也就是说,当关系型表中功能上互相依赖的那些列的每一列都是一个候选关键字时候,该满足BCNF。
BCNF实际上是在第三范式的基础上,进一步消除了主属性的传递依赖。
第四范式(4NF)当一个表中的非主属性互相独立时(3NF),这些非主属性不应该有多值。
若有多值就违反了第四范式。
定义比较抽象,可以参照下面的例子理解。
CUSTOMERID PHONE CELL10008828-123414908888888810008838-1234149099999999由于PHONE和CELL是互相独立的,而有些用户又有两个和多个值。
3NF、BCNF和4NF基本概念和分解
3NF、BCNF和4NF基本概念和分解⼀、第三范式(3NF)——相对于BCNF,允许存在主属性对候选码的传递依赖和部分依赖定义:如果关系模式R∈2NF,且每个⾮主属性都不传递函数依赖于R的主关系键,则称R属于第三范式,简称3NF。
1、把⼀个关系模式分解成3NF,使它具有保持函数依赖性算法如下:其中提到了最⼩函数依赖集,那么最⼩函数依赖集怎么求呢?⽅法如下:举个例⼦:在R(U,F)中,U=ABCDEG,F={B→D,DG→C,BD→E,AG→B,ADG→BC}1.1⾸先求最⼩依赖集(1)右部属性单⼀化,F={B→D,DG→C,BD→E,AG→B,ADG→B,ADG→C}(2)去掉左边多余属性,只针对⾮单属性DG→C,若去掉D,则(G)+=G不包含C,D保留(不冗余),若去掉G,(D)+=D不包含C,G保留BD→E,(D)+=D,(B)+=BDE包含E,则可以B→E代替此函数依赖AG→B,(G)+=G,(A)+=AADG→B,(DG)+=DGC,(AG)+=AGB包含B,则可以由AG→B代替ADG→C,(DG)+=DGC包含C,则可以由DG→C代替所以最⼩依赖集F={B→D,DG→C,B→E,AG→B}(3)去掉多余的依赖去掉B→D,(B)+=BE,不包含D,则不冗余,不去掉去掉DG→C,(DG)+=DG,不包含C去掉B→E,(B)+=BD,不包含E去掉AG→B,(AG)+=AG,不包含B所以最⼩依赖集F={B→D,DG→C,B→E,AG→B}1.2R中所有属性都在最⼩依赖集中出现,转下⼀步1.3按照具有相同左部的原则分为:R1=BDE,R2=DGC,R3=AGB所以最终分解为ρ={R1(BDE),R2(DGC),R3(AGB)}2、把⼀个关系模式分解成为3NF,使它具有保持函数依赖且⽆损算法:step1,求F的规范覆盖Fcstep2,初始化,置ρ={ }step3,逐个考察Fc中的每⼀个FD:X→Y,如果ρ中的每⼀个关系模式都不包含XY,则将XY加⼊ρ中step4,考察R的候选码,如果ρ中所有关系模式都不包含R的候选码,则将R的某个候选码加⼊ρ中2.1其中⽤到了规范覆盖,那么规范覆盖怎么求呢?如下:步骤1,合并函数依赖,将Fc中如α1→β1和α1→β2转换成α1→β1β2,得到新函数依赖集F1步骤2,去除⽆关属性,找出F1中α或β中含有⽆关属性的函数依赖α→β,去除⽆关属性后,代替原依赖集其中步骤2中的⽆关属性定义:有了⽆关属性的定义后,步骤2⽐较好解决了。
课题数据库系统概论第五版教案1
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业) 授课时间:
数据库系统课程教案(计算机专业) 授课时间:
数据库系统课程教案(计算机专业) 授课时间:
数据库系统课程教案(计算机专业) 授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业) 授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)
授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:
数据库系统课程教案(计算机专业)授课时间:。
关系的3种完整性约束+5种范式
关系的3种完整性约束+5种范式关系模型组成:关系数据库,关系操作集合,关系完整性约束。
关系的三类完整性约束:(1)实体完整性(必须)若属性A是基本关系R的主属性,则A不能取空值。
检查和违约处理:1)检查主码值是否唯⼀,如果不唯⼀则拒绝插⼊或修改。
2)检查主码的各个属性是否为空,只要有⼀个为空就拒绝插⼊或修改。
(2)参照完整性(必须)若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值要么为空值,要么等于S中某个元组的主码值。
检查和违约处理:被参照表参照表违约处理可能破坏参照完整性插⼊元组拒绝可能破坏参照完整性修改外码值拒绝删除元组可能破坏参照完整性拒绝/级连删除/设置为空值修改主码值可能破坏参照完整性拒绝/级连删除/设置为空值(3)⽤户定义的完整性(可选)⽐如唯⼀性、能否取空值等。
候选码:设K是R<U,F>的属性,若K->U,则K为R的候选码。
主码:从候选码中选择⼀个。
主属性:包含在任何⼀个候选码中的属性。
⾮主属性:不包含在任何码中的属性。
5NF<4NF<BCNF<3NF<2NF<1NF第⼀范式(1NF):每⼀个分量必须是不可分的数据项。
存在问题:数据冗余太⼤,更新异常,插⼊异常,删除异常。
违反例⼦:F={Sno->Sdept, Sdept->Mname, (Sno, Cno)->Grade}分解为合格:S(Sno, Sdept, Sno->Sdept), SC(Sno, Cno, Grade, (Sno, Cno)->Grade), DEPT(Sdept, Mname, Sdept->Mname)第⼆范式(2NF):若R属于1NF,且每⼀个⾮主属性完全函数依赖于码,则R属于2NF。
存在问题:插⼊异常,删除异常,修改复杂。
违反例⼦:{(Sno, Cno)->完全函数依赖Grade), Sno->Sdept, (Sno, Cno)->部分函数依赖Sdept, Sno->Sloc, (Sno, Cno)->部分函数依赖Sloc}。
数据库工程师复习重点:关系数据库逻辑设计
数据库工程师复习重点:关系数据库逻辑设计关系数据库逻辑设计5.1 概述5.2 基本概念5.2.1 关系模型1、关系模型采用一个二维表格在计算机中组织、存储、处理和管理数据。
(1) 关系名(数据库名):由字母数字组成;(2) 属性名;(3) 关系模式和关系:描述模式描述关系的静态结构,由模式名、关系模式所包含的属性及属性值所满足的条件组成模式定义。
(4) 元组:描述关系中的行;(5) 域:它定义关系的每个属性取值的类型;(6) 主码:能够惟一标识关系中每一个元组的属性或属性组;(7) 关系的数学定义:关系模式是建立在集合集论的基础上的,用数学的概念定义关系有;(A) 定义一:域是值的集合,同一个域中的值具有相同的数据类型;(B) 定义二:(C) 定义三:(D) 当关系引用了属性名后关系具有以下属性:[1] 不能有重复的元组;[2] 元组上下无序;[3] 按属性名引用时属性左右无序;[4] 所有属性值都是原子项(不可再分);(8) 总结:关系是一张二维表,表中的一行被称为一个元组,一列称为属性,由一组域值组成。
关系是元组的集合,关系中的每个元组在数学上被定义为这个关系所涉及的全部域值中笛卡儿积的一个元素。
5.2.2 关系数据库1、关系数据库是按照二维表组织和存储的相互关联的关系的集合,关系数据库模式是关系模式的集合;5.2.3 关系的完整性1、关系的完整性(完整性约束):是对关系的某种约束规则和关系满足的定义。
通常这组约束规则用来限定和检查数据库所含实例的合法性和正确性;2、完整性约束分静态和动态两种,静态完整性约束是基于关系模式的,主要有主码、外码约束和域约束组成;动态完整性约束是基于企业的业务规则的。
3、静态完整性约束规则:(1) 主码约束:主码必须满足:(A) 惟一性:在一个关系中不存在两个元组,它们具有相同的主码值;(B) 最小性:不存在从组成主码的属性集中去掉一个属性,还仍能保持数据的惟一性;(2) 外码约束:(3) 用户定义的完整性:5.3 关系数据库设计理论5.3.1 问题的提出究竟一个关系数据库包含哪些属性是合理的,如何评价一个关系模式设计的优劣?5.3.2 函数依赖函数依理论利用一个关系中属性之间的依赖关系评价和优化关系模式,以保证存储到数据库中的关系具有较好特性;1、函数依赖:(1) 设R(U)为一关系模式,X和Y为属性全集U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数决定Y”或“Y函数依赖于X”,并记作X Y,其中X称为决定因素,因为根据函数依赖定义,给定一个X,就能惟一决定一个Y。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.6 多值依赖与4NF
在关系模式中,数据之间是存在一定联系的,而对这种联系处理的适当与否直接关系到模式中数据冗余的情况。
函数依赖是一种基本的数据联系,通过对数据函数依赖的讨论和分解,可以有效地消除模式中的冗余现象。
函数依赖实质上反映的是“多对一”联系,在实际应用中还会有“一对多”形式的数据联系,诸如此类的不同于函数依赖的数据联系也会产生数据冗余,从而引发各种数据异常现象。
本节就讨论数据依赖中“多对一”现象及其产生的问题。
数据库理论及应用基础33 5.6.1 问题的引入
让我们先看下述例子。
例5-17设有一个课程安排关系,如图5.26所示。
课程名称任课教师选用教材名称
高等数学T11
T12
T13 B11 B12
数据结构T21
T22
T23 B21 B22 B23
图5.26 课程安排示意图
在这里的课程安排具有如下语义:
z“高等数学”这门课程可以由3个教师担任,同时有两本教材可以选用。
z“数据结构”这门课程可以由3个教师担任,同时有3本教材可供选用。
如果分别用Cn、Tn和Bn表示“课程名称”、“任课教师”和“教材名称”,上述情形可以表示如图5.27所示的关系CTB。
Cn Tn Bn
高等数学T11 B11
高等数学T11 B12
高等数学T12 B11
高等数学T12 B12
高等数学T13 B11
高等数学T13 B12
数据结构T21 B21
数据结构T21 B22
数据结构T21 B23
数据结构T22 B21
数据结构T22 B22
数据结构T22 B23
数据结构T23 B21
数据结构T23 B22
数据结构T23 B23
图5.27 关系CTB
很明显,这个关系表是数据高度冗余的。
数据库理论及应用基础
34
通过仔细分析关系CTB,可以发现它有如下特点:
z属性集{Cn}与{Tn}之间存在着数据依赖关系,在属性集{Cn}与{Bn}也存在着数据依赖关系,而这两个数据依赖都不是“函数依赖”,当属性子集{Cn}的一个值确
定之后,另一属性子集{Tn}就有一组值与之对应。
例如当课程名称Cn的一个值
“高等数学”确定之后,就有一组任课教师Tn的值“T11、T12和T13”与之对
应。
对于Cn与Bn的数据依赖关系也是如此。
显然,这是一种“一对多”的情形。
z属性集{Tn}和{Bn}也有关系,这种关系是通过{Cn}建立起来的间接关系,而且这种关系最值得注意的是,当{Cn}的一个值确定之后,其所对应的一组{Tn}值与
U-{Cn}-{Tn}无关,取定{Cn}的一个值为“高等数学”,则对应{Tn}一组值“T11、
T12和T13”与此“高等数学”课程选用的教材即U-{Cn}-{Tn}值无关。
显然,
这是“一对多”关系中的一种特殊情况。
如果属性子集X与Y之间依赖关系具有上述特征,就不为函数依赖关系所能包容,需要引入新的概念予以刻化与描述,这就是多值依赖的概念。
5.6.2 多值依赖基本概念
1. 多值依赖的概念
设有关系模式R(U),X、Y是属性集U中的两个子集,而r是R(U)中任意给定的一个关系。
如果有下述条件成立,则称Y多值依赖(Multivalued Dependency)于X,记为X→→Y:
(1) 对于关系r在X上的一个确定的值(元组),都有r在Y中一组值与之对应。
(2) Y的这组对应值与r在Z=U-X-Y中的属性值无关。
此时,如果X→→Y,但Z=U-X-Y≠Φ,则称为非平凡多值依赖,否则称为平凡多值依赖。
平凡多值依赖的一个常见情形是U=X∪Y,此时Z=Φ,多值依赖定义中关于X→→Y的要求总是满足的。
2. 多值依赖概念分析
属性集Y多值依赖于属性集X,即X→→Y的定义实际上说明下面几个基本点:
z“(1)”说明X与Y之间的对应关系是相当宽泛的,即X一个值所对应的Y值的个数没有作任何强制性规定,Y值的个数可以是从零到任意多个自然数,是“一
对多”的情形。
z“(2)”说明这种“宽泛性”应当受必要的限制,即X所对应的Y的取值与U-X-Y 无关,是一种特定的“一对多”情形。
确切地说,如果用形式化语言描述,则有:在R(U)中如果存在X→→Y,则对R中任意一个关系r,当元组s和t属于r,并且在X上的投影相等:s [X] = t [X],此时应有:
s = s [X]+s [Y]+s [U-X-Y] 和t = t [X] + t [Y]+ t [U-X-Y] 做出相应的两个新的元组:
u = s [X]+t [Y]+s [U-X-Y]和v = t [X] + s [Y] + t [U-X-Y] 则u和v还应当属于r。
数据库理论及应用基础35 上述情形可以用图5.28予以适当解释:
X Z=U-X-Y Y
s X Z1 Y1
t X Z2 Y2
u X Z1 Y2
v X Z2 Y1
图5.28 多值依赖的示意图
在例5-17关系CTB中,按照上述分析,可以验证Cn→→Tn,Cn→→Bn。
“(1)”和“(2)”说明考察关系模式R(U)上多值依赖X→→Y是与另一个属性子集Z=U-Z-Y密切相关的,而X、Y和Z构成了U的一个分割,即U=X∪Y∪Z,这一观点对于多值依赖概念的推广十分重要。
3. 多值依赖的性质
由定义可以得到多值依赖具有下述基本性质:
(1) 在R(U)中X→→Y成立的充分必要条件是X→→U-X-Y成立。
必要性可以从上述分析中得到证明。
事实上,交换s和t的Y值所得到的元组和交换s和t中的Z=U-X-Y值得到的两个元组是一样的。
充分性类似可证。
(2) 在R(U)中如果成立X→Y,则必有X→→Y。
事实上,此时,如果s、t在X上的投影相等,则在Y上的投影也必然相等,该投影自然与s和t在Z=U-X-Y上的投影无关。
“(1)”表明多值依赖具有某种“对称性质”:只要知道了R上的一个多值依赖X→→Y,就可以得到另一个多值依赖X→→Z,而且X、Y和Z是U的分割;“(2)”说明多值依赖是函数依赖的某种推广,函数依赖是多值依赖的特例。
5.6.3 第四范式——4NF
对于R(U)中的任意两个属性子集X和Y,如果成立非平凡的多值依赖X→→Y,则X 必为超键,则称R(U)满足第四范式,记为R(U)∈4NF。
关系模式R(U)上的函数依赖X→Y可以看作多值依赖X→→Y,如果R(U)属于第4范式,此时X就是超键,所以X→Y满足BCNF。
因此,由4NF的定义,就可以得到下面两点基本结论:
z4NF中可能的多值依赖都是非平凡的多值依赖。
z4NF中所有的函数依赖都满足BCNF。
因此,可以粗略地说,R(U)满足第四范式必满足BC范式。
但是反之是不成立的,所以即BC范式不一定就是第四范式。
在例5-17当中,关系模式CTB(Cn,Tn,Bn)惟一的候选键是{Cn,Tn,Bn},并且没有非主属性,当然就没有非主属性对候选键的部分函数依赖和传递函数依赖,所以CTB满足BC 范式。
但在多值依赖Cn→→Tn和Cn→→Bn中的“Cn”不是键,所以CTB不属于4NF。
数据库理论及应用基础
36
对CTB进行分解,得到CTB1和CTB2如图5.29和图5.30所示。
Cn Tn
高等数学T11
高等数学T12
高等数学T13
数据结构T21
数据结构T22
数据结构T23
图5.29 关系CTB1
Cn Bn
高等数学B11
高等数学B12
数据结构B21
数据结构B22
数据结构B23
图5.30 关系CTB2
在CTB1中,有Cn→→Tn,不存在非平凡多值依赖,所以CTB1属于4NF;同理CTB2也属于4NF。