《数据库应用》全套PPT电子课件教案-第二章(关系数据库系统) .ppt_第1页
《数据库应用》全套PPT电子课件教案-第二章(关系数据库系统) .ppt_第2页
《数据库应用》全套PPT电子课件教案-第二章(关系数据库系统) .ppt_第3页
《数据库应用》全套PPT电子课件教案-第二章(关系数据库系统) .ppt_第4页
《数据库应用》全套PPT电子课件教案-第二章(关系数据库系统) .ppt_第5页
免费预览已结束,剩余62页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,本章要点,1. 掌握概念模型,并可以通过e/r图进行数据库的建模。 2. 理解三种常用的数据模型中的层次模型和网状模型, 并对关系模型重点理解掌握。 3. 关系模型是关系数据库的基础,理解和掌握关系模型 是学习关系数据库的基础。 4. 关系数据库系统有三种关系完整性,即实体完整性、参照完整性和用户定义的完整性。理解掌握三种完整性。 5. 对于建好的数据库,主要问题是如何查询其中的数据。学习关系代数语言的使用,为以后的学习打下坚实的基础,并且要熟练掌握关系代数的使用。,2,6.准确理解第一范式,第二范式、第三范式和bc范式的含 义、联系与区别。能正确而熟练地将一个关系模式分解 成属于第三范式或bc范式的模式。 7.深刻理解事务的有关基本概念。,3,2.1 概念数据模型与数据库建模 2.2 常用的数据模型 2.3 关系数据模型的基本术语及形式化定义 2.4 关系完整性 2.5 关系代数 2.6 关系数据库的规范化 2.7 并发控制基础,4,2.1 概念数据模型与数据库建模,2.1.1 实体/联系模型 2.1.2 实体/联系模型的表示方法 2.1.3 数据库建模,5,2.1.1 实体/联系模型,概念模型:指抽象现实系统中有应用价值的元素及其关联 关系,反映现实系统中有价值的信息结构。 概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库涉及人员进行数据库设计的工具,也是数据库设计人员和用户之间进行交流的工具,因此该模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中各种语义知识;另一方面它还应该简单、清晰、易于被用户理解。,6,常用的概念模型是实体-联系(entity - relationship)模型,也称e / r图。 在实体-联系模型中,主要涉及以下概念: 实体:客观存在,可以相互区别的事物称为实体。 实体集:性质相同的同类实体的集合,称为实体集。 属性:实体所具有的某一个特性,或者说描述实体或者联 系的性质或特征的数据项。,7,联系:指组成实体的各属性之间的联系,实体之间的联系 通常是指实体与实体之间不同实体之间的联系。 与一个联系有关的实体集个数,称为联系的元数。二元联系即两个实体之间有以下三种类型: 一对一联系:如果实体集e1中每个实体至多和实体集e2中的一个实体有联系,反之亦然,那么实体集e1和e2的联系称为“一对一联系”,记为“1:1”。,8, 一对多联系:如果实体集e1中每个实体可以与实体集e2中任意个(零个或多个)实体间有联系,而e2中每个实体至多和e1中一个实体有联系,那么称e1对e2的联系是“一对多联系”,记为“1:n”。 多对多联系:如果实体集e1中每个实体可以与实体集e2中任意个(零个或多个)实体有联系,反之亦然,那么称e1和e2的联系是“多对多联系”,记为“m:n”。,9,实体之间的联系类型并不取决于实体本身,而是取决于现实世界的管理方法,或者说取决于语义。以仓库和器件两个实体之间的关联为例: 如果规定一个仓库只能存放一种器件,并且一种器件只能存放在一个仓库,这时仓库和器件之间的联系是一对一的。 如果规定一个仓库可以存放多种器件,但是一种器件只能存放在一个仓库,这时仓库和器件之间的联系是一对多的。 如果规定一个仓库可以存放多种器件,同时一种器件可以存放在多个仓库,这时仓库和器件之间的联系是多对多的。,10,2.2.2 实体/联系模型的表示方法,e/r模型提供了表示实体型、属性和联系的方法。 实体型:用矩形表示,矩形框内写明实体名。 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(11,1n,nm)。 需要注意的是:联系本身也可能有属性。如果一个联系有属性,则这些属性也要用无向边与该联系连接起来。,11,设计e/r图的过程如下: 首先确定实体类型。 确定实体类型的属性。 确定联系类型,及其属性。 把实体类型和联系类型组合成e/r图。 加上实体和联系的属性,并确定实体类型的码。,12,e/r 实例,在物资管理中,一个供应商为多个项目供应多种零件,一种零件只能保存在一个仓库中,一个仓库中可保存多种零件,一个仓库有多名员工值班,由一个员工负责管理。画出该物资管理系统的e/r图。,13,2.1.3 数据库建模,要设计一个数据库,首先要分析数据库中将要存放什么信息,这些信息彼此之间有什么联系,从而确定数据库的结构。数据库的结构,也成数据库模式,因此这个过程就称为数据库建模。数据库模式通常用某种表示方法加以说明。在实际的应用过程中,我们常用e/r模型进行数据库的建模。即对事物进行需求分析收集到的数据进行分类、组织,形成实体、实体的属性,确定实体之间的联系类型,设计e/r图。具体内容在第八章讲述。,14,2.2 常用的数据模型,2.2.1 层次数据模型 2.2.2 网状数据模型 2.2.3 关系数据模型,15,2.2.1 层次数据模型,用树状结构表示实体及实体间的联系的模型称为层次模型。在这种模型中,数据被组织成由“根”开始的“树”,每个实体由根开始沿着不同的分支放在不同的层次上,如果不再向下分支,那么此分支序列中最后的结点称为“叶”。上级结点与下级结点之间为一对多的联系。,16,树的每一个结点代表一个实体。层次模型实际上是由若干个代表实体之间一对多联系的基本层次联系组成的一棵树,层次模型可以直接、方便地表示一对多的联系,但有以下两点限制: 有且仅有一个结点无父结点,这个结点即为树的根。 其它结点有且仅有一个父结点。,17,在插入时,不能插入无双亲的子结点,如新来的教师未分配教研室则无法插入到数据库中,没有一个子女记录值能够脱离双亲记录值而独立存在。 在删除时,如删除双亲结点,则其子女结点也会被一起删除。如删除某个教研室则它的所有教师也会被删除。 在更新时,应更新所有相应的记录,以保证数据的一致性。 支持层次数据模型的dbms称为层次数据库管理系统。,18,层次模型有两个缺点: 一是只能表示1:n联系,虽然系统有多种辅助手段实现m:n联系但较复杂,用户不易掌握; 二是由于层次顺序的严格和复杂,引起数据的查询和更新操作很复杂,因此应用程序的编写也比较复杂。,19,2.2.2 网状数据模型,现实世界中实体间的联系更多的是非层次关系。用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。网中的每一个结点代表一个实体类型。网中的每一个结点代表一个实体。 网状模型突破了层次模型的两点限制:允许结点有多于一个的父结点;可以有一个以上的结点没有父结点。因此,网状模型可以方便地表示类型间的联系。,20,支持网状数据模型的dbms称为网状数据库管理系统,在这种系统中建立网状数据库。网状模型和层次模型在本质上是一致的。,21,2.2.3 关系数据模型,关系模型是三种模型中最重要的一种数据模型。关系数据库系统采用了关系模型作为数据的组织方式,现在流行的数据库系统大都是基于关系模型的关系数据库系统。 关系模型由关系数据库、关系操作集合和关系完整性约束三部分组成。,22,1.关系数据结构 二维表来组织数据,而这个二维表在关系数据库中就称为关系。 2. 关系操作 传统的集合运算 并(union) 交(intersection) 差(difference) 广义笛卡尔积 (extended cartesian product),23,专门的关系运算 选择(select)投影(project)连接(join)除(divide) 有关的数据操作 查询(query)插入(insert)删除(delete)修改(update) 3. 关系完整性约束 在数据库中,数据完整性是指保证数据正确的特性。它包括两方面的内容: 与现实世界中应用需求的数据的相容性和正确性; 数据库内数据之间的相容性和正确性。,24,2.3 关系数据模型基本术语及形式化定义,关系:就是二维表,二维表的名字就是关系的名字。 属性:二维表中的列称为属性(或称为字段),每个属性有一个名字,称为属性名。二维表中对应一列的值称为属性值;二维表中列的个数称为关系的元数。如果一个二维表有n列,则称其为n元关系。 值域:二维表中属性的取值范围称为值域。 元组:二维表中的行称为元组(或称为记录)。,25,分量:元组中的每一个属性值称为一个分量(或称为数据项),n元关系的每个元组有n个分量。 候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为该关系的一个候选码。候选码又称为候选关键字或候选键。在一个关系上可以又多个候选码。 主码:一个关系可能有多个候选码,则选定其中一个作为主码。每个关系都有一个且仅有一个主码。主码又称为主健或主关键字,是表中的属性或属性组,即主码可以由一个属性组成,也可以由多个属性共同组成。,26,主属性:包含在任一候选码中的属性称为主属性。 非主属性:不包含在任一候选码中的属性称为非主属性。 全码:关系模式的所有属性组构成此关系模式的唯一候选码。,27,2.3.2 关系数据结构及其形式化定义,笛卡儿积 给定一组域d1,d2,dn,这些域中可以有相同的,d1,d2,dn的笛卡儿集为: d1d2dn(d1,d2,dn)| didi, i=1,2, n 其中每一个元素称为一个n元组,元素中的每个值称为一个分量。,28,设d1 = 计算机软件专业,信息科学专业 d2 = 张珊,李海,王宏 d3 = 男,女 则d1d2d3笛卡儿积为:,29,基本关系的性质: 每一分量必须是不可分的最小数据项,即每个属性都是不可再分解的,这是关系数据库对关系的最基本的限定。 列的个数和每列的数据类型是固定的,即每一列中的分量是同类型的数据,来自同一个值域。 不同的列可以出自同一个值域,每一列称为属性,每个属性要给予不同的属性名。 列的顺序是无关紧要的,即列的次序可以任意交换,但一定是整体交换,属性名和属性值必须作为整列同时交换。 行的顺序是无关紧要的,即行的次序可以任意交换。 元组不可以重复,即在一个关系中任意两个元组不能完全一样。,30,2.3.3 关系模式,关系模式是对关系的描述,一个关系模式应当是一个五元组。它可以形式化地表示为: r(u d dom f) r为关系名,u为属性的集合,d为属性的域,dom为属性向域的映象集合。f为属性间数据的依赖关系集合。 关系模式通常可以简记为:r(u)或r(a1,a2, ,an) 其中r为关系名,a1,a2, ,an为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。,31,2.4 关系完整性,完整性规则是对关系的某种约束条件。包括三类完整性约束:实体完整性、参照完整性和用户定义的完整性。 其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为是关系的两个不变性,应该由关系系统自动支持。,32,2.4.1 实体完整性,实体完整性规则保证关系中的每个元组都是可识别的和惟一的。 实体完整性规则是指关系数据库中所有的表都必须有主码,而且主码值不能重复,构成主码的各属性值均不能取空值。,33,对于实体完整性规则说明如下: 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。 现实世界中的实体是可区分的,即它们应该具有唯一性标识。相应地,关系模型中以主码作为唯一性标识。 主码中的属性(即主属性)不能取空值,不仅是主码整体,而是所有主属性均不能为空。反过来,若主属性为空值,说明该实体不完整,即违背了实体完整性。,34,2.4.2 参照完整性,定义:设f是基本关系r的一个或一组属性,但不是关系r的码,如果f与基本关系s的主码ks相对应,则称f是基本关系r的外码(foreign key),并称基本关系r为参照关系(referencing relation),基本关系s为被参照关系(referenced relation)或目标关系(target relation)。关系r和s不一定是不同的关系。,35,参照完整性规则是指若属性(或属性组)f是基本关系r的外码,它与基本关系s的主码ks相对应(基本关系r和s不一定是不同的关系),则对于r中每个元组在f上的值必须为: 或者取空值(f的每个属性值均为空值); 或者等于s中某个元组的主码值。,36,例:学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 学生关系的“专业号”属性与专业关系的主码“专业号”相对应,因此,“专业号”属性是学生关系的外码。这里学生关系是参照关系,专业关系是被参照关系。,37,学生关系中每个元组的“专业号”属性只能取下面两类: 空值,表示尚未给学生分配专业 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中。即被参照关系“专业”中一定存在一个元组,它的主码值等于该参照关系“学生”中的外码值。,38,2.4.3 用户定义完整性,用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。 在用户定义完整性中最常见的是限定属性的取值范围,即对值域的约束。如选课关系中成绩不能为负数;某些数据的输入格式要有一些限制等。关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。,39,2.5 关系代数,关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系,运算结果亦为关系。 关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。 关系代数的运算按运算符的不同,主要分为传统的集合运算和专门的关系运算两类。,40,2.5.1 传统的关系运算,传统的集合运算是二目运算,包括四种运算:并、交、 差、广义笛卡尔积。 1. 并(union) 设关系r和s具有相同的关系模式,r和s的并是由属于r或属于s的元组构成的集合,记为rs。形式定义如下: r s t | t r t s ,t是元组变量, r和s的元数相同。,41,2. 交(intersection) 关系r和s的交是由属于r又属于s的元组构成的集合,记为rs,这里要求r和s定义在相同的关系模式上。形式定义如下: r s tt r t s ,t是元组变量,r和s的元数相同。,42,3. 差(difference) 设关系r和s具有相同的关系模式,r和s的差是由属于r但不属于s的元组构成的集合,记为rs。形式定义如下: r s t | t r t s ,t是元组变量,r和s的元数相同。,43,4. 广义笛卡尔积(extended cartesian product) 两个分别为n元和m元的关系r和s的广义笛卡尔积是一个(n + m)列的元组的集合。元组的前n列是关系r的一个元组,后m列是关系s的一个元组。若r有k1个元组,s有k2个元组,则关系r和关系s的广义笛卡尔积有k1k2个元组。 r s trts|trrtss,44,2.5.2 专门的关系运算,专门的关系运算包括选择、投影、连接等。其中,第一个为一元操作,后两个为二元操作。 1.选择 选择运算是从指定的关系中选择某些元组形成一个新的关系,被选择的元组是用满足某个逻辑条件来指定的。 选择运算表示为:,45,其中,是选择运算符,r是关系名,t是元组,f表示选择条件,它是一个逻辑表达式,取逻辑值真或假。 选择运算实际上是从关系r中选取使逻辑表达式f为真的元组。这是从行的角度进行的运算。,46,2.投影 关系r上的投影是从r中选择出若干属性列组成新的关系。从关系中消除某些属性,就可能出现重复行,应取消这些完全相同的行。 投影运算表示为:,47,3.连接 连接运算是两个表之间的运算,这两个表通常是具有一对多联系的父子关系。所以连接过程一般是由参照关系的外部关键字和被参照关系的主关键字来控制的,这样的属性通常也称为连接属性。 连接运算是将满足两个表之间运算关系的记录连接成一条记录,所有这样的记录构成新的表(连接运算的结果)。连接运算也称为运算。,48,连接运算一般表示为:,49,连接运算中最重要也是最常用的连接有两个,一个是等值连接,一个是自然连接。 为“”时的连接是等值连接,它是从关系r与关系s的广义笛卡儿积中选取a、b属性值相等的那些元组,即,50,自然连接是一种特殊的连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中要去掉相同的属性列。也就是说,若关系r和s具有相同的属性组b,则自然连接可记为:,一般的连接运算是从行的角度进行运算,但自然连接还需要去掉相同的列,所以它是从行和列的角度进行运算。,51,2.6 关系数据库的规范化,在关系数据库系统中,关系模型包括一组关系模式,各个关系模式不是完全孤立的。如何设计一个合适的关系数据库系统,关键是关系数据库模式的设计。 数据库的设计决定了到整个系统运行的效率,也是系统成败的关键所在,所以必须在关系数据库的规范化理论的指导下逐步完成。,52,2.6.1 函数依赖的定义,设有关系模式r(u),x和y是属性集u的子集,函数依赖(fd)是形为xy的一个命题,只要r是r的当前关系,对r中任意两个元组t和s,都有tx=sx蕴涵ty= sy,那么称fd xy在关系模式r (u)中成立。 也可以这样定义: 如果r的两个元组在属性a1 , a2 , ,an上一致,则它们在另一个属性b上也一致,那么a1 , a2 , ,an函数决定b,记作a1,a2,anb, 也可以说:a1,a2,an函数决定b。其中a1,a2,an称为决定因素。,53,例如:有一个关于学生选课、教师任课的关系模式: r(s#,sname,c#,grade,cname,tname,tage) 属性分别表示学生学号、姓名、选修课程的课程号、成绩、课程名、任课教师姓名和年龄等意义。 如果规定,每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写成下列fd形式: s# sname c# cname 每个学生每学一门课程,有一个成绩,那么可写出下列fd: (s#,c#) grade 还可以写出其他一些fd: c# (cname,tname,tage) tname tage,54,2.6.2 完全依赖与部分依赖,对于函数依赖w a, 如果存在vw(v是w的子集),而函数依赖v a成立,则称a部分依赖(partial dependency)于w;否则,若不存在这种v,则称a为完全依赖(full dependency)于w。 从上面定义可以得出一个结论:若w是单属性,则不存在真子集v,所以a必然完全依赖于w。,55,r(s#,sname,c#,grade,cname,tname,tage)具体说明完全依赖和部分依赖对冗余或异常有没有影响。在关系模式中,(s# ,c#)为键码,函数依赖集如下: s# sname c# cname s# c# grade (完全依赖) s# c# cname,tname,tage (部分依赖) tname tage 可以看出属性cname,tname,tage都函数依赖于c#,而部分依赖于键码。属性grade则完全依赖于键码。,56,2.6.3 传递依赖,对于函数依赖x y ,如果y x(x不函数依赖于y)而函数依赖y z成立,则称z对x传递依赖(transitive dependency)。 说明一下,如果x y,且 y x ,则x ,y相互依赖,这时z对x之间就不是传递依赖,而是直接依赖了。直接依赖常用 表示。 如果学生中没有重名现象,则学号与姓名之间就属于相互依赖,即 s# sname sname s# s# sname 还是以关系r为例,有以下函数依赖: c# tname tname tage c# tage 根据传递依赖的定义可知,tage传递依赖于c#。,57,2.6.4 关系模式的规范化,由于冗余的依赖有部分依赖和传递依赖之分,而属性又有主属性和非主属性之分,于是,从不同的分析与解决问题的角度出发,导致解决问题的深度与效果也会有所不同,因此,把解决的途径分为几个不同的级别,以属于第几范式来区别。 范式就是符合某一种级别的关系模式的集合。关系数据库中的关系模式必须满足一定的要求,满足不同程度要求的模式属于不同范式。目前,范式主要有六种范式:第一范式、第二范式、第三范式、bc范式、第四范式和第五范式。第一范式的要求最低,在第一范式基础上满足进一步的要求为第二范式,其余的以此类推。显然各级范式之间存在如下关系: 5nf 4nf bcnf 3nf 2nf 1nf,58,1.第一范式(1nf) 当且仅当一个关系r中,每一个元组的每一个属性只含有一个值时,该关系属于第一范式(1nf)。 1nf要求属性是原子的,即关系表的每一分量是不可分的数据项。也即1nf 不允许表中出现嵌套或复合的属性。,59,2.第二范式(2nf) 对于关系r,若r1nf,且每一个非主属性完全函数依赖于码,则r2nf。 第二范式不允许关系模式中的非主属性部分依赖于键码。如果数据库模式中每个关系模式都是2nf,则称数据库模式为2nf的数据库模式。2nf 在 1nf基础上消除了非主属性对码的部分函数依

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论