课件-第03章关系数据库_第1页
课件-第03章关系数据库_第2页
课件-第03章关系数据库_第3页
课件-第03章关系数据库_第4页
课件-第03章关系数据库_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

第3章

关系数据库

关系数据库系统概述关系数据模型关系模型的完整性约束关系代数关系数据库系统的三层模式结构本演示文稿可能包含观众讨论和即席反应。使用PowerPoint可以跟踪演示时的即席反应,在幻灯片放映中,右键单击鼠标请选择“会议记录”选择“即席反应”选项卡必要时输入即席反应单击“确定”撤消此框此动作将自动在演示文稿末尾创建一张即席反应幻灯片,包括您的观点。

关系数据库系统概述关系数据库的发展CODASYL于1962年发表的“信息代数”一文

E.F.Codd从1970年起发表了一系列的论文20世纪70年代末的实验系统SystemR和Ingres从20世纪80年代逐步走向成熟关系数据模型概述关系数据结构关系操作集合关系完整性约束关系数据结构

关系数据结构非常简单,在关系数据模型中,现实世界中的实体及实体与实体之间的联系均用关系来表示。从逻辑或用户的观点来看,关系就是二维表。

关系操作集合传统的集合运算

并(Union)交(Intersection)差(Difference)广义笛卡尔积(ExtendedCartesianProduct)

专门的关系运算选择(Select)投影(Project)连接(Join)除(Divide)有关的数据操作查询(Query)插入(Insert)删除(Delete)修改(Update)

关系是以集合的方式操作的,即操作的对象是元组的集合,操作的结果也是元组的集合。这和非关系模型的操作结果是一条记录有着重要区别。关系的操作能力可以用代数方式和逻辑方式来表示:代数方式是通过关系代数对关系的运算来表达查询要求的方式。逻辑方式是通过关系演算、用谓词表达对关系的查询要求的方式。现在关系数据库已经有了标准语言——SQL(StructuredQueryLanguage),它是一种介于关系代数和关系演算的语言。

综上所述,又可以把关系数据语言分为三类:关系代数语言、关系演算语言以及具有关系代数和关系演算双重特点的SQL语言。

关系完整性约束

在数据库中数据完整性是指保证数据正确的特性。它包括两方面的内容:

与现实世界中应用需求的数据的相容性和正确性;数据库内数据之间的相容性和正确性。

在关系数据模型中一般将数据完整性分为三类

实体完整性参照完整性用户定义完整性

关系数据模型关系模型的数据结构和基本术语

关系的形式定义

对关系的限定(关系的性质)

关系模型的基本术语

参照关系和被参照关系:在关系数据库中可以通过外部关键字使两个关系关联,这种联系通常是一对多(1:n)的,其中主(父)关系(1方)称为被参照关系,从(子)关系(n方)被称为参照关系。

关系属性值域元组关系模式候选关键字主关键字主属性非主属性外部关键字基本概念(1)关系(Relation):关系就是二维表,一个关系对应一张二维表。(2)元组(Tuple):二维表中的行。(3)属性(Attribute):二维表中的列。相当于记录中的一个字段。每一个属性对应一个名称称为属性名。二维表中列的个数称为称为关系的元数,一个二维表如果有n列,则称为n元关系。(4)关键字(Key):可唯一标识元组的属性或属性集,也称为关系键或主码。(5)域(Domain):属性的取值范围,如年龄的域是(14~40),性别的域是(男,女)。(6)分量:每一行对应的列的属性值,即元组中的一个属性值也称数据项。元组的每一个属性值称为元组的一个分量,n元关系的每一个元组有n个分量。(7)关系模式:二维表的结构称为关系模式。是对关系的描述,一般表示为:关系名(属性1,属性2,……属性n),如:学生(学号,姓名,性别,年龄,系别)。(8)外部关键字(外码):如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字,也称外键。(9)主属性:包含在任一候选关键字中的属性称为主属性。超键、候选键、主键关系模型是怎么实现关系之间的联系的?约定:(1)在关系模式的主键属性下面画一条直线,表示主键。(2)在关系模式的外键属性下面画一条波浪线,表示外键。关系的形式定义笛卡儿积定义:设D1,D2,…,Dn为任意集合,定义D1,D2,…,Dn的笛卡儿积为:其中每一个元素(d1,d2,…,dn)叫作一个n元组,简称元组,元组中每一个di叫作元组的一个分量。关系的形式定义:笛卡儿积D1×D2…×Dn的任意一个子集称为D1,D2,…,Dn上的一个n元关系。例子:1301130313071311学生×篮球排球足球=项目学生项目1301篮球1301排球1301足球1303篮球1303排球1303足球1307篮球1307排球1307足球1311篮球1311排球1311足球需要说明两点关系是元组的集合,集合(关系)中的元素(元组)是无序的;而元组不是分量di的集合,元组中的分量是有序的。例如,在关系中(a,b)≠(b,a),但在集合中{a,b}={b,a}。若一个关系的元组个数是无限的,则该关系称为无限关系,否则称为有限关系;在数据库中只考虑有限关系。关系的性质每一分量必须是不可分的最小数据项,即每个属性都是不可再分解的,这是关系数据库对关系的最基本的限定。列的个数和每列的数据类型是固定的,即每一列中的分量是同类型的数据,来自同一个值域。不同的列可以出自同一个值域,每一列称为属性,每个属性要给予不同的属性名。列的顺序是无关紧要的,即列的次序可以任意交换,但一定是整体交换,属性名和属性值必须作为整列同时交换。行的顺序是无关紧要的,即行的次序可以任意交换。元组不可以重复,即在一个关系中任意两个元组不能完全一样。

关系模型的完整性约束

实体完整性规则参照完整性规则用户定义完整性完整性约束的作用

实体完整性规则实体完整性是要保证关系中的每个元组都是可识别和唯一的。实体完整性规则的具体内容是:关系中的主关键字的值不能为空或部分为空。即主关键字不能取空值。实体完整性是关系模型必须满足的完整性约束条件,也称作是关系的不变性。关系数据库管理系统可以用主关键字实现实体完整性,这是由关系系统自动支持的。对实体完整性规则的几点说明实体完整性规则是针对关系而言的,而关系则对应一个现实世界中的实体集。例如,仓库关系对应现实世界中的仓库实体集。现实世界中的实体是可区分的,它们具有某种标识特征;相应地,关系中的元组也是可区分的,在关系中用主关键字做唯一性标识。主关键字中取空值,则意味着关系中的某个元组是不可标识的,即存在不可区分的实体,这与实体的定义也是矛盾的。参照完整性规则现实世界中的实体间存在着某种联系,而在关系模型中实体是用关系描述的、实体之间的联系也是用关系描述的,这样就自然存在着关系和关系之间的参照或引用。参照完整性也是关系模型必须满足的完整性约束条件,是关系的另一个不变性。通过一个例子来说明什么是参照完整性

仓库号职工号工资

供应商号供应商名地址

职工供应商仓库参照关系和被参照关系的定义

设F是关系R的一个属性或属性组,但不是关系R的关键字,另外有主关键字为K的关系S。如果关系R的属性或属性组F与关系S的主关键字K相对应,则称F是关系R的外部关键字,并称关系R是参照关系、S是被参照关系(或目标关系)。关系R和S可以是同一个关系。

例如:职员(职员号,工资,上级)参照完整性规则

如果属性(或属性组)F是关系R的外部关键字,它与关系S的主关键字K相对应,则对于关系R中每个元组在属性(或属性组)F上的值必须为:●或者取空值(F的每个属性均为空值);●或者等于S中某个元组的主关键字的值。

不允许参照引用与当前关系相联系的另一个关系中不存在的元组。

在关系系统中通过说明外部关键字来实现参照完整性,而说明外部关键字是通过说明引用的主关键字来实现的,也即通过说明外部关键字,关系系统则可以自动支持关系的参照完整性。

用户定义完整性指用户对某一具体数据制定的约束条件进行检验。一种与应用密切相关的数据完整性约束,如某个属性的值必须唯一某个属性的取值必须在某个范围内某些属性值之间应该满足一定的函数关系等类似以上的约束不是关系数据模型本身所要求的,而是为了满足应用方面的语义要求而提出的在用户定义完整性中最常见的是限定属性的取值范围,即对值域的约束,所以在用户定义完整性中最常见的是域完整性约束。完整性约束的作用执行插入操作时检查完整性

执行插入操作时需要分别检查实体完整性规则、参照完整性规则和用户定义完整性规则。

执行删除操作时检查完整性

执行删除操作时一般只需要检查参照完整性规则。

执行更新操作时检查完整性

执行更新操作可以看作是先删除旧的元组,然后再插入新的元组。所以执行更新操作时的完整性检查综合了上述两种情况。

从E-R模型到关系模型的转换1、从E-R图导出关系模型的基本原则:(1)E-R图中每个实体类型都应转换为一个关系模式,实体的属性即关系模式的属性。(2)E-R图中联系类型情况较复杂,需根据不同情况做不同的处理。下面着重讨论联系的转换方法。两实体集间1:n联系

两实体集间1:n联系,可将“一方”实体的主关键字纳入“n方”实体集对应的关系中作为“外部关键字”,同时把联系的属性也一并纳入“n方”对应的关系中。

两实体集间m:n联系

对于两实体集间m:n联系,必须对“联系”单独建立一个关系,用来联系双方实体集。该关系的属性中至少要包括被它所联系的双方实体集的“主关键字”,并且如果联系有属性,也要归入这个关系中。两实体集间的1:1的联系

假设A实体集与B实体集是1:1的联系,联系的转换有三种方法:①把A实体集的主关键字加入到B实体集对应的关系中,如果联系有属性也一并加入;②把B实体集的主关键字加入到A实体集对应的关系中,如果联系有属性也一并加入;③建立第三个关系,关系中包含两个实体集的主关键字,如果联系有属性也一并加入。练习:关系模式的冗余和异常问题数据冗余:指同一数据在系统中多次重复出现.

一个关系模式设计的不好,会出现像文件系统一样的数据冗余、异常和不一致等问题。例:设有一个关系模式R(学号,课程号,课程名,教师名)学号课程号课程名教师名S2C4高数张三S4C4高数张三S6C4高数张三S6C2英语李四S4C2英语李四S8C6VB王五下表表示该关系模式的若干实例数据冗余操作异常(1)修改异常(2)插入异常(3)删除异常由此可见,上例中的关系模式的设计不是一个合适的设计。“分解”是解决冗余的主要办法,也是规范化的一条原则。用下面两个关系模式R1和R2代替RR1(学号,课程号)R2(课程号,课程名,教师名)注意:R分解成R1和R2两个模式是否最佳分解,也不是绝对的函数依赖概念:是指关系中属性之间取值的依赖情况

假定关系R(A,B,C)中,当A有一取值时,便唯一对应一个B值和C值,则称B和C依赖于A,或称A决定了B或C,简记为A->B,A->C。关系中可能存在的不同函数依赖(1)完全函数依赖(2)部分函数依赖(3)传递函数依赖实例分析有学生关系模式学生(学号,课程号,姓名,性别,班级,班主任,课程名,学时数,成绩)范式与规范化1、第一范式(1NF):如果关系模式R的每个属性都是不可分的原子值,那么称R是第一范式的模式。2、第二范式(2NF):对于满足1NF的关系,通过消除非主属性对主关键字的部分函数依赖,使之达到2NF。3、第三范式(3NF):如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)。分解关系的基本原则:

关系规范化实际上是关系逐步逐步分解的过程,通过分解使关系逐步达到较高范式。但是分解方法往往不是唯一的,不同的分解可能导致关系数据库的性能有很大差别。应遵循的原则:(1)分解必须是无损的,即分解后不应丢失信息;(2)分解后的关系要相互独立,避免对一个关系的修改波及另一个关系;(3)遵从“一事一地”原则,即一个关系只表达一个主题,如果涉及多个主题,就应该继续分解关系。关系代数基本概念和符号传统的集合运算专门的关系运算基本运算及变换

关系代数的基本概念关系代数的运算对象是关系,关系代数的运算结果也是关系。与一般的运算一样,运算对象、运算符和运算结果也是关系代数的三个要素。关系代数的运算可以分为两大类传统的集合运算

专门的关系运算

关系代数的运算符可以分为四类:集合运算符

专门的关系运算符比较运算符逻辑运算符几个概念和专门的符号元组的分量元组的连串元组中属性的映像集元组的分量设有关系模式R(A1,A2,…,An)r∈R表示r是R的一个元组r.Ai或r[Ai]表示r这个元组中相应于属性Ai的一个分量例如,假设R是仓库关系,r=("WH1","北京",370)是仓库关系的一个元组,则r∈R

,r.仓库号或r[仓库号]为"WH1"。元组的连串设R为m元关系,S为n元关系,并且

r=(r1,r2,…,rm)∈Rs=(s1,s2,…,sn)∈S则称为元组的连串。这是一个(m+n)元组,前m个分量为R中的一个m元组,后n个分量为S中的一个n元组。

元组中属性的映像集设有关系模式R(X,Y),其中X、Y可以是单个属性,也可以是属性集,定义当X取值为x时,x在R中的映象集为:

设有如右上表所示的订购单关系,把它命名为R,并且进一步设X为属性职工号,Y为属性集{供应商号,订购单号,订购日期},则当X取值为E3时

{(S7,OR67,2002/06/23),(S4,OR79,2002/07/29),(S6,OR90,2002/07/13),(S3,OR91,2002/10/27)}Yx=?映像集的例子传统的集合运算集合的并运算集合的交运算集合的差运算集合的广义笛卡尔积运算集合的并、交、差运算示意集合的广义笛卡尔积运算设R和S是两个关系,如果R是m元关系、有k个元组,S是n元关系、有l个元组,则广义笛卡尔积R×S是一个m+n元关系、有k×l个元组。广义笛卡儿积可以记作:专门的关系运算选择运算(Select)投影运算(Project)连接运算(Join)除运算(Division)选择运算

选择运算是从指定的关系中选择某些元组形成一个新的关系,被选择的元组是用满足某个逻辑条件来指定的。选择运算表示为:

其中R是关系名,σ是选择运算符,F是逻辑表达式。选择运算举例:σ职工号="E3"(订购单)订购单关系

从订购单关系中选择职工号为“E3”的元组构成新的关系投影运算1)选择指定的属性,形成一个可能含有重复行的表格;2)删除重复行,形成新的关系。

投影运算对指定的关系进行投影操作,根据该关系分两步产生一个新关系:投影运算表示为

其中R是关系名,π是投影运算符,A是被投影的属性或属性集。投影运算举例:订购单关系

选取职工号和供应商号两列构成新的关系π职工号,供应商号(订购单)选择和投影运算举例:

从订购单关系中,选取出职工号为E3的所经手的订购单号和与之相关的供应商号。订购单关系π供应商号,订购单号(σ职工号="E3"(订购单))连接运算

连接运算是两个表之间的运算,这两个表通常是具有一对多联系的父子关系。所以连接过程一般是由参照关系的外部关键字和被参照关系的主关键字来控制的,这样的属性通常也称为连接属性。连接运算的概念连接运算是将满足两个表之间运算关系的记录连接成一条记录,所有这样的记录构成新的表(连接运算的结果)。连接运算可以表示为:

这里Ai是R中的属性,Bj是S中的属性,θ是关系(比较)运算符,连接的结果是一个广义笛卡儿乘积的子集,其中的元组满足Ai和Bj间的θ关系。当θ为“=”时,称为等值连接;θ为“<”时,称为小于连接;θ为“>”时,称为大于连接等等。自然连接在连接运算中最常用的连接是自然连接。自然连接运算一般表示为:

其中Ai和Bj要出自同一个值域,并且在实际应用中这两个属性往往具有相同的属性名。自然连接做了三件事:计算广义笛卡尔积R×S

;选择满足条件r[Ai]=s[Bj]的所有元组;去掉重复的属性。自然连接的例子注意:为了使一个关系中的任一元组都参加自然连接,该元组的连接属性(字段)值必须出现在另一个参加连接的关系中;连接陷阱问题;一般在实际应用中可以父无子,而不可以子无父,否则将破坏参照数据完整性。综合运算实例

根据以上关系求出在上海工作的职工的工资值都有哪些?仓库职工关系代数语句为:查询过程示意选择运算自然连接运算投影运算注意

自然连接和等值连接很相象,但它们不同,自然连接要去掉重复的属性,而等值连接却不需要去掉重复的属性。除运算

设有关系R(X,Y)和S(Y),其中X、Y可以是单个属性或属性集,则除法运算定义为:如何理解除运算?理解除法运算R(X,Y)是被除关系S(Y)是除关系商关系由R中某些X属性值构成,其中的任一X值所对应的一组Y值都包含除关系S。除运算常用于至少…查询或运算除运算的例子它的含义是:至少向WH1、WH3、WH5供货的供应商号。基本运算及变换

在关系代数运算中集合的并运算、差运算、笛卡尔积运算以及选择运算和投影运算是5种基本运算,另三种运算(集合的交运算以及连接运算和除运算)可以用5种基本运算来表达,引进它们并不增加语言的能力,但是可以简化表达。两个关系的交运算可以表示为R∩S=R-(R-S)两个关系的自然连接运算可以表示为两个关系的θ连接运算可以表示为两个关系的除运算可以表示为关系数据库系统的三层模式结构

温馨提示

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

评论

0/150

提交评论