关系模型和关系运算讲述_第1页
关系模型和关系运算讲述_第2页
关系模型和关系运算讲述_第3页
关系模型和关系运算讲述_第4页
关系模型和关系运算讲述_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

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

文档简介

《数据库技术》简介一.

内容数据库技术的基本理论和方法数据库领域研究的的新理论、新技术。二.

要求掌握相关理论、原理和技术有课后书面作业期末闭卷考试成绩:平时成绩(20)+考试成绩(80)

三.

教材与参考书1.教材:

数据库理论与新技术北京理工大学出版社

2.参考资料:1.王珊

萨师煊数据库系统概论高等教育出版社2.闪四清,数据库系统原理与应用教程,清华大学出版社,北京,2008.43.李昭原,数据库技术新进展

清华大学出版社2007.104.SYBASE、ORACLE、IBMDB2、INFORMIX、MSSQLSERVER数据库系统有关资料。3.教材和参考书的使用

本课程以教材为主,课件内容主要来自教材和参考书,课程内容自成体系。对以前一点没有学过数据库基本知识的同学,可以从参考书1或其它相关参考书中查到一些最基本的知识。四.本课程主要内容第一章关系和关系模型

数据模型,关系和关系模式,键,关系的更新.第二章关系运算布尔运算,选择,投影,连接,除,常关系,属性命名,关系代数.第三章数据依赖函数依赖、多值依赖和连接依赖,数据依赖的公理系统,依赖集的等价和覆盖及算法。第四章关系数据库范式范式的概念,1NF~5NF,模式分解及其算法,生成范式的不同算法。第五章数据库系统设计数据库系统设计与数据库设计,数据库系统设计的任务与内容,数据库系统设计方法与步骤。第六章数据库管理系统数据库管理系统的系统结构、主要功能、实现技术、语言处理,当前流行的主流数据库管理系统简介。本课程主要内容第七章分布式数据库系统分布式数据库系统的特点,分布式数据库系统的体系结构,分布式查询处理,分布式事务管理,分布式目录,数据库的安全保护,数据库的完整性保护。第八章面向对象数据库新应用的需求与传统数据库的局限性,面向对象数据模型,面向对象数据库系统的查询、并发控制,面向对象数据库管理系统,对象-关系数据库管理系统。第九章数据库技术新进展数据库技术新进展,包括:数据仓库、数据挖掘、并行数据库、Web数据库、多媒体数据库、工程数据库、主动数据库等。第十章数据库技术论文选读选择10-15篇与教学内容相关的学术论文进行讲解,让学生了解本学科的基本研究方法和研究方向。五.数据库领域研究的三个主要方面1.数据库管理系统软件(DBMS)

研究其设计方法和实现技术,数据模型,对持久性数据的有效存储和存取方法,数据结构定义和数据操纵语言,用户接口等。数据库管理系统软件是位于用户和操作系统之间的数据管理软件。如ORACLE、SQLServer、DB2、ACCESS等2.

数据库应用系统的设计方法和工具

早期有设计指南和规范标准,设计阶段的计算机辅助设计工具,计算机辅助设计全过程。要求设计工具能够支持不同应用领域数据库设计,如支持复杂对象设计等。

3.有关数据模型及设计理论的研究(7方面)(1)数据依赖理论函数依赖、多值依赖、连接依赖(2)规范化理论范式、算法、模式分解(3)查询优化理论包括逻辑层和物理层的优化4.泛关系理论泛关系模型、泛关系表示、泛关系查询5.符号表追踪理论6.超图理论利用超图研究数据库模式的特性7.空值理论(不确定信息)空值表示,加了空值后的运算、推理,空值的分类,分解方法、查询优化等。分布式数据库面向对象数据库对象—关系数据库并行数据库多媒体数据库工程数据库智能数据库模糊数据库嵌入式数据库主动数据库空间数据库时态数据库Web数据库数据仓库和数据挖掘

六.数据库领域的新技术人工管理阶段(上世纪50年代初期)数据不保存应用程序管理数据数据不共享数据不具有独立性应用程序1应用程序2应用程序n数据集1数据集2数据集n

七.数据管理技术的产生和发展

文件系统阶段(上世纪50年代后期)

数据物理结构和逻辑结构的分离数据可以长期保存由文件系统管理数据数据文件是面向应用的数据共享性差,冗余度大数据独立性差数据文件1应用程序1应用程序n文件管理系统数据文件n数据库系统阶段(上世纪60年代后期)数据结构化数据的共享性高,冗余度低,易扩充数据独立性高数据由DBMS统一管理和控制程序1程序2程序n数据库管理系统数据库数据库(DataBase,DB)

长期存放在计算机内的、有组织的、可共享的数据集合。数据库管理系统(DataBaseManagementSystemDBMS)

数据库管理系统是位于用户和操作系统之间的数据管理软件。如ORACLE、SQLServer、DB2、ACCESS等。

数据库管理系统的功能是:科学地组织和存储数据、高效地获取和维护数据。八.数据库、数据库管理系统、数据库系统数据库系统(DBS)由:数据库、数据库管理系统、应用系统、数据库管理员(DBA)、数据库用户构成的系统用户1用户2用户3应用系统操作系统数据库用户开发工具数据库管理系统DBA后页

任课教师:苏桂平

手机/p>

邮箱:sugp@答疑地点:青年公寓6号楼2层214-3答疑时间:周三上午3-4节第一章

关系和关系模型主要内容:数据模型关系和关系模式键关系的更新数据模型的组成要素:

数据结构、数据操作、数据的完整性基本的数据模型分类:

层次、网状、关系数据模型、面向对象数据模型1.1数据模型

1.1.1数据模型的组成要素

(l)数据结构:用于描述数据的静态结构,包括应用所涉及的对象类和对象类所具有的特性以及它们之间的联系。(2)数据操作:是施加在对象上的一组操作,是对系统动态特性的描述。

(3)数据的完整性:是对数据静态和动态特征性的限制,是一组完整性规则的集合。完整性规则是用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。1.层次模型有且仅有一个结点无双亲,称为根结点;其它结点有且仅有一个双亲。

层次模型的数据结构是一棵树。1.1.2基本数据模型分类

大学组织机构的层次模型

2.网状模型

允许一个结点可以有多个双亲;多个结点无双亲结点。班级课程学生基本结构是二维表,一张表称为一个关系。与层次和网状模型比较,关系模型有下列优点:数据结构单一;建立在严格的数学概念基础上;将数据定义和数据操纵统一在一种语言中,使用方便,易学易用。

由于关系模型具有许多优点,因而在80年代之后的商品化数据库系统几乎都是关系型的。所以关系数据库是本课程的主要研究内容之一。

3.关系数据模型9020042

陆川

2004029020041

刘敏

2004019020031

李丽

200302

9020031

王鸣

200301

班级

姓名

学号

(a)学生关系

9020042

计算机

曹岩

9020041

人工智能

计算机

马小路

9020032英语

9020031

计算数学

吴云峰

班级

课程

系别

教师姓名

(b)教师开课关系

可以表示复杂对象;模块化的结构,便于管理;具有定义抽象数据类型的能力。面向对象的数据模型是新一代数据库系统的基础,是数据库技术发展的方向。

4.面向对象数据模型1.2关系和关系模式1.2.1关系

在关系模型中唯一的数据结构是关系,一个关系对应一张二维表。域

:具有相同数据类型的值的集合。定义1(笛卡尔积):D1,D2,...,Dn的笛卡尔积为:

D1D2...Dn={(d1,d2,...,dn)diDi,i=1,2,...,n}。其中每一个元素(d1,d2,...,dn)叫做一个n元组(n-tuple),元素中第i个值di叫做第i个分量。例:设D1={1,2,3},D2={a,b}D1D2={(1,a),(1,b),(2,a),(2,b),(3,a),(3,b)}实际上,如D1—学生集(50个),如D2—班级集(2个),

D1D2有多少元素?意义?定义2(关系):集合D1,D2,...,Dn笛卡尔积的任一个子集称该集合上的一个关系(Relation)。

其中,集合D1,D2,...,Dn是关系中元组的取值范围,称关系的域(domain),这些域是有限的非空集合,n叫做关系的度(degree)。关系的基本概念关系(Relation)二维表,关系用关系名标识,如关系r。元组(Tuple)表中的行,一般用变量t表示。属性(Attribute)表中的一列,如列Ai,dom[Ai]表示属性Ai的域

键(Key,码)可以唯一地确定一个元组的属性组。关系举例:火车时刻表dom(NUMBER)={565,523,532,K95,K96}dom(FROM)=dom(TO)={BeiJing,XuZhou,…,ShenZhen}dom(DEPARTS)=dom(ARRIVES)=一组时间。表1火车时刻表7:3717:13WuChangShenZhenK967:1816:55ShenZhenWuChangK959:4021:45BeiJingLuoYang5326:0621:30LuoYangXuZhou5237:5420:40BeiJing565ARRIVESDEPARTS

FROMNUMBER

TOXuZhou关系的性质(关系数据库中对关系的限定)

1.每一列中的值是同类型的数据,来自同一个域。2.不同的列可以有相同的域,每一列称为属性,用属性名标识。3.列的顺序是无关紧要的。4.任意二个元组不能完全相同。(相同元组称重复组)5.行的顺序是无关紧要的。6.关系中的每个分量都是原子值,是不可分的数据项。

1.2.2关系模式

关系模式一般表示为:关系名(属性1、……属性n)

如:R(A1,A2,…,An)。用U表示关系R的属性集合U=A1∪A2∪…∪An,

模式R上的一个关系r是从U到D的映象。元组t∈r,t的分量用t[Ai]表示.t[Ai]∈Di例:在学生关系模式S(SNO,SNAME,AGE,SEX,CNO)中,当CNO=1,就可以一班学生的列表,即一个具体的关系;当CNO=2,就可以二班学生的列表,即另一个具体的关系。

定义(关系数据库模式):

设属性集U和U的属性所关联的域为D,U上的关系数据库模式R是R1,R2,…,Rp

的集合,即:R={R1,R2,…,Rp}

,且U

=R1∪R2∪…∪Rp。比如:R1为学生关系:S(Sno,Sname,Sbirth,Dept,Class,Rno)R2为班级关系:C(Class,Pname,Dept,Cnum,Cyear)R3为系关系:D(Dept,Dno,Office,Dnum)R4为学生会关系:M(Mname,Myear,Maddr,Mnum)关系数据库:一个关系数据库模式R对应的所有关系集合

{r1,r2,…,rp}称为关系数据库模式R上的一个关系数据库d.

关系模式和关系的区别和联系:关系模式:对一类实体特征的结构性描述,即对关系的结构性描述,该描述一般包括关系名、属性名、属性域的类型和长度,属性之间固有的依赖联系等。关系模式和关系的区别和联系:关系模式描述的是关系的静态结构信息,是对一个关系的“型”的描述,是相对固定的。关系是在关系模式约束之下的若干实体的集合,实体的数量是随时间变化的,但这种变化必定在关系模式的约束范围内。

一般用大写字母表述关系的结构,比如R,用小写字母一个具体的关系值,如r.

1.3

键(Key)和关系的完整性

1.键设关系模式R(U),KU,r是R上的任一关系,若对r中的任意二个不同的元组t1、t2满足:(1)t1[K]t2[K];

(2)若KK而t1[K]t2[K]不成立。称K是R的键。若仅条件(1)成立,K是R的超键。有键的定义得出:键是能唯一标示元组的最小属性集。在上面火车时刻表的例子中,NUMBER是一个键。

2.主键、隐含键、候选键、超键主键:有的关系具有多于一个键,这种情况下指派其中一个键为主键,简称为关系的键。用带下划线的属性表示。例如:TRAIN(NUMBER,FROM,TO,DEPARTS,ARRIVES)TRAIN(NUMBER,FROM,TO,DEPARTS,ARRIVES)隐含键:未被制定的键称隐含键,也称替补键。候选键:主键和隐含键统称为候选键。超键:在上面键的定义中,若条件(2)不成立,称K为R的超键。例如:NUMBER、FROM是一个超键。3.关系的完整性

(1)关系模型的三要素:

数据结构

关系模型的数据结构为单一的关系,它表示了实体和实体间的联系。关系操作

关系操作关系代数:布尔运算、专门关系运算;关系演算:关系元组演算、域演算。完整性约束

实体完整性、参照完整性、用户定义的完整性。

实体完整性

关系中键属性的值不能取空值。

例如:学生关系S(SNO,SNAME,AGE,SEX,CNO)

参照完整性

是关系间引用所遵循的规则,与外键有关。

用户定义的完整性

数据间应满足的语义约束关系,由用户定义,由系统检查。(2)完整性约束

下下页

外键:

设F是关系R的一个或一组属性,但不是R的键。若F是另一个关系S的键,则称F是关系R的外键。

R为参照关系,S为被参照关系。

例如:参照关系学生关系S(SNO,SNAME,AGE,SEX,CNO)班级关系C(CNO,CMN)---被参照关系

参照完整性规则关系R中外键的值或者为空值,或者为被参照关系中主键的值。建立表结构和完整性约束

补充:SQL语言简介

SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。SQL语言将数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能集于一体,可以独立完成数据库生命周期中的全部活动.

SQL被作为关系型数据库管理系统的标准语言。目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,MicrosoftSQLServer,Access等都采用了SQL语言标准。基本的SQL语句包括Select、Insert、Update、Delete、Create、Drop,它们可以被用来完成几乎所有的数据库操作。很多数据库根据不同的需要对SQL语句进行了再开发和扩展。

SQL的基本语句

1.创建新表

create

tabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)

例:CREATETABLEC

(CNONUMBER(6),

CMNCHAR(10))2.选择select*fromtable1where范围例:SELECTSNO,SNAMEFROMSWHERECNO=2002013.插入insertintotable1(field1,field2)values(value1,value2)例:INSERTINTOSVALUES(909901,‘李利’,21,‘男’,200205);4.删除deletefromtable1where范围例:DELETEFROMSWHERESNO=20100162;5.更新(修改)updatetable1setfield1=value1where范围例:UPDATESSETSage=23WHERESno=‘20100162’

完成核心功能SQL语言只用9个动词,并且它的表达接近英语句子,所以比较简单、易学。

SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,

SQL语句能够嵌入到高级语言,比如:C、PL/1、FORTRAN。

CREATETABLES

(SNONUMBER(4),

SNAMECHAR(10)NOTNULL,

AGENUMBER(3), SEXCHAR(1), CNONUMBER(6),

CONSTRAINTSK1PRIMARYKEY(SNO),

CONSTRAINTSK2FOREIGNKEY(CNO)REFERENCESC(CNO)),

CONSTRAINTSK3CHECK(AGEIN(16,45)));CREATETABLEC

(CNONUMBER(6),

CMNCHAR(10),

CONSTRAINTCKPRIMARYKEY(CNO));1.4关系的更新—插入、删除、修改

1.插入

对关系r(A1,A2,…,An),插入操作形式为:

ADD(r;A1=d1,A2=d2,…An=dn)ADD(r;d1,d2,…,dn)

例:ADD(S;SNO=909901,SNAME=李利,AGE=21,SEX=男,CLASSNO=200205)插入操作的有效检查: (1).描述的元组是否符合所指定的关系模式; (2).元组的某些值是否属于对应的域; (3).元组的键是否已在关系中存在。

例:用SQL语言实现在学生关系S中插入一个元组。

INSERTINTOSVALUES(909901,‘李利’,21,‘男’,200205);

2.删除

对关系r(A1,A2,…,An),删除操作形式为:

DEL(r;A1=d1,A2=d2,…An=dn)DEL(r;d1,d2,…dn

);

若K=B1B2…Bm,DEL(r;B1=k1,B2=k2,…Bm=km)例:DEL(S;SNO=909901,SNAME=李利,AGE=21,SEX=男,CLASSNO=200205)删除操作的检查:如果被删除元组在关系中不存在,这个关系将保持不变,但需给出一个出错提示。**删去最后一个元组不受限制,即允许是空关系。

实际上,为了识别被删除的元组并不需要所有元组的信息,只需要制定键的值就足够了。比如:删除学号为909901的学生元组

DELETEFROMSWHERESNO=909901;

3.修改

修改元组的部分值。对关系r(A1,A2,…,An),若属性集{C1,C2,…,Cp}{A1,A2,…An},则修改操作形式为:

CH(r;A1=d1,A2=d2,…An=dn;C1=e1,C2=e2,…,Cp=ep)

如果K={B1,B2,…Bm}为键,则可简化为:

CH(r;B1=k1,B2=k2,…Bm=km;C1=e1,C2=e2;…Cp=ep)例:CH(S;SNO=909901;CLASSNO=200203)修改操作可用删除操作后跟一个插入操作实现。对插入和删除操作的限制可运用到修改操作中。例:施加一系列操作于火车时刻表1.ADD(train;33,TianJin,ShangHai,17:20,10:36);2.ADD(train;Y15,BeiJing,TianJin,10:05,12:43);3.DEL(train;523);4.CH(train;NUMBER=532;DEPARTS=22:45,ARRIVES=10:42)。

火车时刻表7:3717:13WuChangShenZhenK967:1816:55ShenZhenWuChangK959:4021:45BeiJingLuoYang5326:0621:30LuoYangXuZhou5237:5420:40BeiJing565ARRIVESDEPARTS

FROMNUMBER

TOXuZhou练习2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。学生:学号、姓名、出生年月、系名、班号、宿舍区。班级:班号、专业名、系名、人数、入校年份。系:系名、系号、系办公地点、人数。学会:学会名、成立年份、办公地点、人数。语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。请给出关系模式,指出各关系模式的候选键和外键。练习解答解:(1)关系模式如下:学生:S(Sno,Sname,Sbirth,Dept,Class,Rno)

班级:C(Class,Pname,Dept,Cnum,Cyear)

系:D(Dept,Dno,Office,Dnum)

学会:M(Mname,Myear,Maddr,Mnum)(2)各关系模式的候选键、外部键如下:

A、学生S候选键:Sno;外部键:Dept、Class;

B、班级C候选键:Class;外部键:Dept;

C、系D候选键:Dept或Dno;无外部键;

D、学会M候选键:Mname;无外部键。课后练习:如何用SQL来创建该数据库?(建议没有学过数据库的同学在自学SQL后练习一下)第二章

关系运算本章的主要内容:布尔运算选择投影连接除常关系属性重命名关系代数2.1布尔运算

关系可以看做元组的集合,那么集合的并、交、差等布尔运算算都可以用到关系中。关系的布尔运算包括:并、交、差、广义笛卡尔积、补、有效补。同类关系:若R和S是同类关系,则满足如下条件:(1)R和S具有相同的度;(2)R和S的对应属性定义在同一个域上。同类关系也称相容运算,布尔运算大多是在同类关系中进行。并(Union)关系R和S的并其结果由属于R或属于S的所有元组组成,其结果为一个新关系。记为:

Q=R∪S={t|t∈R或t∈S}

交(Intersection)

关系R和S的交其结果由既属于R又属于S的所有元组组成。记为:

Q=R∩S={t|t∈R且t∈S}

差(Difference)

关系R和S的差由属于R但不属于S的所有元组组成。记为:

Q=R-S={t|t∈R但tS}例子:R∪S

ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR∪S

c1b2a2c2b2a1c1b1a1CBAc1b1a1CBAc1b2a2c2b3a1c2b2a1CBARSR-S

例子:R-S

c1b2a2c2b2a1c1b1a1CBAc1b2a2c2b2a1CBAc1b2a2c2b3a1c2b2a1CBARSR∩S

例子:R∩

S

例:并运算的SQL实现查询200201班的学生和年龄超过23岁的学生姓名。SELECTSNO,SNAMEFROMSWHERECNO=200201UNIONSELECTSNO,SNAME FROMSWHEREAGE>23;*INTERSECT(交)、MINUS(差)

广义笛卡尔积关系R和S的笛卡尔积为R中所有元组和S中所有元组的串接。结果关系的属性个数:k1+k2

其中k1和k2分别为R和S的属性数结果关系的元组数:

m×n

其中m、n分别为R和S的元组数。

R和S的笛卡尔积记为:

Q=R×S={t|t

=trts,tr∈R

且ts∈S}广义笛卡尔积的例子:ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR×S

c1b1a1c1b1a1c1b2a2c1b2a2c2b2a1c1b2a2c1b1a1R.CR.BR.Ac2b2a1c2b2a1c2b2a1c2b3a1c1b2a2c2b2a1c2b3a1c1b2a2c2b2a1S.CS.BS.Ac1b2a2c2b3a1有学生关系S(Sno,Sname,Sage)和选课关系SC(Sno,Cno,Grade)SELECTS.*,SC.*FROMS,SC例:广义笛卡尔积的SQL实现

补(Complement)

关系模式R(A1,A2,…,An),R上的关系r。

补运算:设dom(R)表示模式R上的所有元组的集合,则关系r的补为:

r=dom(R)-r

例:设R(A,B),dom(A)={a1,a2,,a3},dom(B)={b1,b2}R上的关系r和r的补r如下所示。

r=(AB)

r=(AB)a1b1a2b2a1b2a3b1

a2b1a3b2例:设R(A,B,C),dom(A)={a1,a2},dom(B)=整数的集合,

dom(C)={c1,c2}。求r的补。

r=(ABC)

a11

c1a12

c2a21

c1a22

c1a23

c2

r=adom(R,r)-r

adom(R,r)为模式R上的所有属性对应关系r的有效值域组成的所有元组的集合。由于adom(R,r)是有限的,则r的有效补r总是一个关系。~~

有效补

关系模式R(A1,A2,…,An),属性Ai的有效值域:

adom(Ai,r)={d|d∈Di,存在t∈r且t[Ai]=d}定义r的有效补为:例:设R(A,B,C),dom(A)={a1,a2},dom(B)=整数的集合,

dom(C)={c1,c2}。R上的关系r和r的有效补如下。~~

r=(ABC)r=(ABC)a11

c1a11

c2

a12

c2a12

c1

a21

c1a13

c1

a22

c1

a13

c2

a23

c2

a21

c2

a22

c2

a23

c1

思考:在关系模式R(A1,A2,…,An)中,若每个属性Ai的值域都有限,任一关系r的补和有效补是否一致?

例:设R(A,B),dom(A)={a1,a2,,a3},dom(B)={b1,b2}。

R上的关系r和r的补r及r的有效补r

如下所示。

r=(AB)r

=(AB)

r=(AB)a1b1a2b2a2b2a1b2a3b1

a2b1a3b2

~~有效补的应用:当关系元组数比其有效补元组数多得多时,有效补可作为数据压缩手段。例如:学生选课,一个班有50个学生选数据库课,3个学生不选,则存储选修了数据库课的学生可用存储其有效补实现。练习

1.设R(A,B,C),dom(A)={a1,a2},

dom(B)={b1,b2,b3},

dom(C)={c1,c2}

r(ABC)a2b3c1

a2b1c1

a2b2c1

a1b1c1求:r的补和有效补从关系中选择在指定属性上有确定值的关系的子集。表示为:

A=a(r)={tt∈r

且t[A]=a}。

选择运算是选择关系中行的子集,即选择满足条件元组。例:在下面关系train中求:

FROM=’beijing’(train);DEPARTS=’16:55’(train)

2.2选择(Select)

(2)可分配

σA=a(rθs)=σA=a(r)θσA=a(s)其中θ=∩、∪或-,且r和s是同类关系。

广义选择:

A

a(r)={t|tr且t[A]a}

其中为、、、、、。选择运算的特性设r(R)是一个关系,A和B为R的属性。

(1)可交换

σA=a(σB=b(r))=σB=b(σA=a(r))。例:学生关系中,A=2011年入学, B=信息学院

2.3投影(Project)投影是选取关系中列的子集。设模式R上关系r,X是R上属性的子集,r到X上的投影r表示为:

r(X)=x(r)={t[X]|t∈r}。

投影的结果不是原来的关系,是X中几列属性。

**如果X中不包含R的键,则选取的列中会出现重复元组,r(X)中应不包含重复元组。例:Sno,Sname(S);Cno(S)投影的特性:

投影的串接给定关系r(R),且YXR,则:Y(X(r))=Y(r)对一串投影而言,若X1X2…

Xm

R,则:X1(X2(…(Xm(r))…))=X1(r)

投影和选择的可交换性

设r是R上的一个关系,A∈X,XR,则下式成立:

X(A=a(r))=A=a(X(r))SELECTSNO,SNAMEFROMSWHERECNO=200401投影选择检索200401班学生的姓名。如果R∩S=Φ,则r

s为关系r和s的笛卡尔积:r×s。2.4.1

自然连接(NaturalJoin)

自然连接是在两个关系共同属性上的等值连接。设有关系r(R)和s(S),属性A是关系模式R和S的公共属性,

r与s的自然连接可用下式表示:

rs={t|t=tr

ts[A]tr∈r,ts∈s

&tr

=t[R]

&ts=t[S]&tr[A]=ts[A]}

它表示r中元组和S中元组的串接,而且它们的公共属性值只出现一次。2.4连接(Join)ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS例子:求R和S自然连接ABCEa1b153a1b267a2b3810a2b382自然连接R

S

连接运算:有学生关系S和课程关系C.SELECTSNO,SNAME,S.CNO,CMNFROMS,CWHERES.CNO=C.CNO

连接运算可模拟选择运算设关系r(R),A∈R,a∈dom(A)。设s(A)只含一个分量A

A=a(r)可表示为:

rs

A=a1(r)∪A=a2(r)∪…∪A=ak(r)表示为:rs

连接运算的可交换和可结合性

qr=rq (qr)s=q(rs)

A

.

a

连接对并、交、差的可分配性(r∪r)s=(rs)∪(rs)

连接的上述性质在查询优化中是很有用的,在第7章分布式数据库的查询优化中要用到。连接的特性:

A

.

a1a2…

ak

多元连接

可连接:

设关系s1(S1),s2(S2),…,sm(Sm),t1,t2,…,tm为元组序列,且ti∈Si,1≤i≤m。又R=S1∪S2∪…∪Sm。若在r(R)上存在一个元组t,使得ti=t[Si],1≤i≤m,则称元组序列t1,t2,…,tm在R上是可连接的。完全连接:设关系序列s1(S1),s2(S2),…,sm(Sm),如果对关系Si(1≤i≤m)中的每个元组都是可连接序列中的成员,则称s1s2…sm

为完全连接。完全连接的例子:

s1(AB)

s2(BC)

s3(AC)

a1b1

b1c2a1c2a1b2

b2c1a2c2a2b1

s1

s2

s3=(ABC)a1b1c2a2b1c2

a1c1加入a1

b2c12.4.2θ_连接(Theta_Join)θ_连接:设r(R)和s(S)为两个关系,且A∈R,B∈S,dom(A)=dom(B),r和s在A和B上的θ_连接写作:

r[AθB]s设Q=R∪S,则θ_连接可用下式表示:

q[Q]={t|tq,trr&tss

&t[R]=tr&t[S]=ts&t[A]θt[B]}其中θ为比较符:、、、、、示例ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS例子:RSAR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310

[C<E]AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32等值连接R

S[R.B=S.B]ABCEa1b153a1b267a2b3810a2b382自然连接R

S学生关系S(SNO,SNAME,AGE,SEX,DEPTNO)专业系DEPT(DEPTNO,DNAME)

选择运算:SNAME=‘LiMing’(S);投影运算:SNO,SNAME,DEPTNO(S);

连接运算:

SDEPT

示例:

思考:在第一章的建立数据库例子中,如何通过学号查该学生的入学年份和所学专业?如何通过系号查该系同学所住的宿舍区?如何通过学号查该学生所在系的的办公地点?

建立一个关于系、学生、班级、学会等诸信息的关系数据库。学生:学号、姓名、出生年月、系名、班号、宿舍区。班级:班号、专业名、系名、人数、入校年份。系:系名、系号、系办公地点、人数。学会:学会名、成立年份、办公地点、人数。学生:S(Sno,Sname,Sbirth,Dept,Class,Rno)

班级:C(Class,Pname,Dept,Cnum,Cyear)

系:D(Dept,Dno,Office,Dnum)

学会:M(Mname,Myear,Maddr,Mnum)2.5除法(Division)

即:对每一元组ts∈s都存在一元组tr∈r,使得tr[R']=t且tr[s]=ts设r÷s

得到的新关系其属性集为X,则除法可用下式表示:R(X,Y)÷

S(Y)=

X(R)–X(

X(R)×S–R)即

r÷s是满足下列条件的最大关系:

r÷s的每个元组t与s中每个元组u组成的元组<t,u>必在关系r中。

定义除:设关系r(R)和s(S),且SR。令R'=R–S,除运算r÷s

的结果为一个新关系r',记作:

r÷s=r'(R')={t|tr'且tr∈r,ts∈s,t=tr[R']&tr[S]=ts,tsr}909803

除法运算:

SC÷CDS

909802

DB

909802

OS

909801

DB909801

课程号

学号

DB

SC课程号

DBC课程号

OSDSCC课程号

DBOS

关系代数运算的应用:查询例:学生关系:S(SNO,SNAME,...)

课程关系:C(CNO,CNAME)

学生选课关系:SC(SNO,CNO,G)查询:1.选修了数据库课的学生姓名.

2.选修了全部课程的学生号和姓名SNAME(CNAME=‘数据库’(C)SCS)SNO,CNO(SC)÷

CNO(C)

SNO,SNAME(S)设A1,A2,...,An为互不相同的属性名且常量Ci

dom(Ai),1≤i≤n。常元组表示为:<C1:A1,C2:A2,...,Cn:An>

常关系是常元组的集合,模式A1A2...An上的一个常关系可表示为:{<C11:A1C21:A2C31:A3......Cn1:An>,

<C12:A1C22:A2C32:A3......Cn2:An>,

...... <C1k:A1C2k:A2C3k:A3......Cnk:An>}2.6常关系(ConstantRelation)

设关系r(R),AR,BR,但A和B有相同的域。又设R'=(R-A)∪B,则属性A被重命名为B后的关系记作:

r'(R')=A→B(r)可以一次对多个属性重命名:

A1,A2,...,AK→B1,B2,...,BK(r)2.7属性重命名例1:

设关系R(A,C,D),S(B,C,D),A和B有相同的域,则下列运算可以进行:

R∪B→A(S)例2:设学生表S(SNO,SNAME,CLASS)SELECTS2.SNAMEFROMSS1,SS2whereS1.SNAME=‘李利’ANDS1.CLASS=S2.CLASS*SQL中的同义名

关系代数是一个7元组从U到D的映射

温馨提示

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

评论

0/150

提交评论