关系数据库理论基础_第1页
关系数据库理论基础_第2页
关系数据库理论基础_第3页
关系数据库理论基础_第4页
关系数据库理论基础_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

第2章

关系数据库理论基础关系数据库应用数学方法来处理数据库中的数据。最早将这类方法用于数据处理的是1962年CODASYL发表的“信息代数”,之后有1968年DavidChild在7090机上实现的集合论数据结构,但系统地、严格地提出关系模型的是美国IBM公司的E.F.Codd.30多年来,关系数据库系统的研究取得了辉煌的成就。关系方法从实验室走向了社会,涌现出许多性能良好的商品化关系数据库管理系统(RDBMS),如著名的DB2,Oracle,Ingres,Sybase,Informix等。数据库的应用领域迅速扩大。9/24/20241周口师范学院计算机科学系本书第2、3、4、5、6章将集中讨论关系数据库的有关问题。其中,第2章介绍关系模型的基本概念,即关系模型的数据结构、关系操作和关系的完整性;第3、4章介绍关系数据库的标准语言SQL;第5章介绍关系系统查询优化;第6章关系规范化。这是关系数据库的理论基础,也是关系数据库系统逻辑设计的工具。9/24/20242周口师范学院计算机科学系2.1关系模型概述关系数据库系统是支持关系模型的数据库系统。关系模型有关系数据结构、关系操作集合和关系完整性约束三部分组成。9/24/20243周口师范学院计算机科学系一、单一的数据结构——关系关系模型的数据结构非常单一。在关系模型中,现实世界的实体以及实体之间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构是一张二维表。9/24/20244周口师范学院计算机科学系二、关系操作关系模型给出了关系操作的能力,但不对RDBMS语言给出具体的语法要求。关系模型中常用的关系操作包括:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等查询(Query)操作和增加(Insert)、删除(Delete)、修改(Update)等更新操作两大部分。查询的表达能力是其中最主要的部分。关系操作的特点是集合操作方式,即操作的对象和操作的结果都是集合。这种操作方式也称为一次一集合(set-at-a-time)的方式。相应地,非关系数据模型的数据操作方式则为一次一记录(record-at-a-time)的方式。9/24/20245周口师范学院计算机科学系早期的关系操作能力通常用代数方式或逻辑方式来表达,分别称为关系代数和关系演算。关系代数是用对关系的运算来表达查询的方式。关系演算是用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。关系代数、元组关系演算和域关系演算三种语言在表达能力上是完全等价的。关系代数、元组关系演算和域关系演算均是抽象的查询语言,这些抽象的语言与具体的DBMS中实现的实际语言并不完全一样。单它们能用作评估实际系统中查询语言能力的标准或基础。实际的查询语言除了提供关系代数或关系演算的功能外,还提供了许多附加功能,例如集函数、关系赋值、算术运算等。9/24/20246周口师范学院计算机科学系关系语言是一种高度非过程化的语言,用户不必请求DBA为其建立特殊的存取路径,存取路径的选择由DBMS的优化机制来完成,此外,用户不必求助于循环结构就可以完成数据操作。另外还有一种介于关系代数和关系演算之间的语言SQL(StructuredQueryLanguage)。SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、DDL、DML和DCL于一体的关系数据语言。它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。9/24/20247周口师范学院计算机科学系因此,关系数据语言可以分为三类:关系数据语言关系代数语言关系演算语言域关系演算语言元组关系演算语言具有关系代数和关系演算双重特点的语言这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。9/24/20248周口师范学院计算机科学系三、关系的三类完整性约束关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。下面将分别介绍关系模型的三个方面。9/24/20249周口师范学院计算机科学系2.2关系数据模型的数据结构2.2.1关系的数学定义1.域(Domain)域:是一组具有相同数据类型的值集合。例如:{自然数},{男,女},{0,1}等都可以是域。基数:域中数据的个数称为域的基数。域被命名后用如下方法表示:D1={白亚春,陈韬,王雪莲},表示姓名的集合,基数是3;D2={计算机系,电子系}9/24/202410周口师范学院计算机科学系2.笛卡尔积(CartesianProduct)给定一组域D1,D2,…,Di,…,Dn(可以有相同的域),则笛卡尔积定义为:D1×D2×…×Di×…×Dn={(d1,d2,…,di,…,dn)∣di∈Di,i=1,2,…,n}D1×

D2={(陈韬,计算机系),(陈韬,电子系),(王雪莲,计算机系),(王雪莲,电子系),(白亚春,计算机系),(白亚春,电子系)}其中每个(d1,d2,…,di,…,dn)叫做元组,元组中的每一个值di叫做分量,di必须是Di中的一个值。显然,笛卡尔积的基数就是构成该积所有域的基数累乘积,若Di(i=1,2,…,n)为有限集合,其基数为mi(i=1,2,…,n),则D1×

D2×

…×Di

×

…×Dn笛卡尔积的基数M为:9/24/202411周口师范学院计算机科学系该笛卡尔积的基数是M=m1m2=3*2=6,即该笛卡尔积共有6个元组,它可组成一张二维表姓名系别陈韬计算机系陈韬电子系王雪莲计算机系王雪莲电子系白亚春计算机系白亚春电子系9/24/202412周口师范学院计算机科学系3.关系(Relation)关系:笛卡尔积D1×

D2×

…×

Di

×

…×

Dn的子集R称作在域D1,D2,…,Dn上的关系,记作:R(D1,D2,…,Di,…,Dn)其中:R为关系名,n为关系的度或目(Degree),Di是域组中的第i个域名.当n=1时,称该关系为单元关系;当n=2时,称该关系为二元关系;以此类推,关系中有n个域,称该关系为n元关系。把列称为属性(Attribute)。一般来说,一个取自笛卡尔积的子集才有意义。

9/24/202413周口师范学院计算机科学系关系可以分为三种类型:基本关系(又称基本表):是实际存在的表,它是实际存储数据的逻辑表示;查询表:是对基本表进行查询后得到的结果表;视图表:是由基本表或其它视图导出的表,是一个虚表,不对应实际存储的数据。

姓名系别陈韬计算机系王雪莲电子系白亚春计算机系9/24/202414周口师范学院计算机科学系2.2.2关系的性质1.列是同质的。

2.关系中行的顺序、列的顺序可以任意互换,不会改变关系的意义。

学号姓名性别出生日期所在系0022102王雪莲女1980-9-15电子系计算机系白亚春男1981-1-2500513090052201陈韬男计算机系1981-5-60052217袁更旭男1980-12-8计算机系9/24/202415周口师范学院计算机科学系3.关系中的任意两个元组不能相同。

4、关系中的元组分量具有原子性,即每一个分量都必须是不可分的数据项。

学号姓名性别出生日期所在系0022102王雪莲女1980-9-15电子系0051309白亚春男1981-1-25计算机系0051309白亚春男1981-1-25计算机系0052217袁更旭男1980-12-8计算机系9/24/202416周口师范学院计算机科学系2.3关系的完整性2.3.1键1.候选键(Candidatekey)若关系中的某一属性组的值能惟一地标识一个元组,则称该属性组为候选键。2.主键(Primarykey)若一个关系中有多个候选键,则选定一个为主键。9/24/202417周口师范学院计算机科学系3.主属性和非主属性(PrimeAttribute)andNon-primeAttribute)

包含在任何一个候选键中的属性称为主属性。而不包含在任何一个候选键中的属性称为非主属性4.外键(Foreignkey)

设F是基本关系R的一个或一组属性,但不是R的键(主键或候选键),如果F与基本关系S的主键K相对应,则称F是R的外键,并称R为参照关系,S为被参照关系。

9/24/202418周口师范学院计算机科学系学号姓名性别出生日期所在系0022102王雪莲女1980-9-15电子系0051309白亚春男1981-1-25计算机系0052201陈韬男1981-5-6计算机系0052217袁更旭男1980-12-8计算机系课程号学号成绩C201002210275C505005130995C508005220192C5060052217809/24/202419周口师范学院计算机科学系2.3.2实体完整性实体完整性规则:关系中的主键不能为空值(Null)。空值就是“不知道”或“无意义”2.3.3参照完整性参照完整性规则:表的外键必须是另一个表主键的有效值,或者是空值。9/24/202420周口师范学院计算机科学系学号姓名性别出生日期所在系0022102王雪莲女1980-9-15电子系0051309白亚春男1981-1-25计算机系0052201陈韬男1981-5-6计算机系0052217袁更旭男1980-12-8计算机系课程号学号成绩C201002210275C505005130995C508A10286992C5060052217809/24/202421周口师范学院计算机科学系2.3.4用户定义完整性用户按照实际的数据库运行环境要求,对关系中的数据所定义的约束条件,它反映的是某一具体应用所涉及的数据必须要满足的条件。

9/24/202422周口师范学院计算机科学系2.4关系代数关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。关系代数的运算对象是关系,运算结果亦为关系。关系运算用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符9/24/202423周口师范学院计算机科学系关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类。其中传统的集合运算将关系看作元组的集合,其运算是从关系的“水平”方向即行的角度来进行。而专门的关系运算不仅涉及行而且涉及列。比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的9/24/202424周口师范学院计算机科学系2.4.1传统的集合运算传统的集合运算是二目运算,包括并、交、差、广义笛卡儿积四种运算。当集合运算并、交、差用于关系时,要求参与运算的两个关系必须是相容的,即两个关系的度数一致,并且关系相应属性的性质必须一致。9/24/202425周口师范学院计算机科学系设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则可以定义并交差运算如下:1.并并:是将两个关系中的所有元组构成新的关系,并运算的结果中必须消除重复值。关系R与S的并运算记作:R∪S={t|t∈R∨t∈S}。

其结果仍为n目关系,有属于R或属于S的元组组成.9/24/202426周口师范学院计算机科学系2.交交:将两个关系中的公共元组构成新的关系。关系R与S的交运算记作:

R∩S={t|t∈R∧t∈S}

其结果仍为n目关系,有属于R且属于S的元组组成。3.差差:运算结果是由属于一个关系并且不属于另一个关系的元组构成的新关系,就是从一个关系中减去另一个关系。关系R与S的差运算记作:

R-S={t|t∈R∧t∈S}

其结果仍为n目关系,有属于R而不属于S的所有元组组成。9/24/202427周口师范学院计算机科学系4.广义笛卡儿积(ExtendedCartesianProduct)

设有两个n,m目的关系R,S,则R和S的广义笛卡儿积R×S是一个(m+n)目的元组的集合,每个元组的前n个分量是R的一个元组,后m个分量是S的一个元组。关系R和关系S的广义笛卡儿积运算记作:R×S={trts|tr∈R∧ts∈S}

传统集合运算举例:P40、419/24/202428周口师范学院计算机科学系2.4.2专门的关系运算专门的关系运算包括选择、投影、连接、除等。为了叙述的方便,先引入几个记号:(1)设关系模式为R(A1,A2,…,An)。它的一个关系设为R。t∈R表示t是R的一个元组,t[Ai]则表示元组t中相应于属性Ai的一个分量。(2)若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik

是A1,A2,…,An

中的一部分,则A称为属性列或域列。t[Ai]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合,A则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。(3)R为n目关系,S为m目关系。tr∈R,ts∈S

trts

称为元组的连接。它是一个n+m列的元组,前n个分量为R中的一个n元组。后m个分量为S中的一个m元组。

9/24/202429周口师范学院计算机科学系(4)给定一个关系R(X,Z),X和Z为属性组,定义,当t[X]=x时,x在R中的象集为:

Zx={t[Z]|t∈R,t[X]=x}

它表示R中属性组X上值为x的诸元素在Z上分量的集合。下面给出这些关系运算的定义:9/24/202430周口师范学院计算机科学系1.选择(Selection)选择:是按照给定条件从指定的关系中挑选出满足条件的元组构成新的关系。或者说,选择运算的结果是一个表的行的子集。记作:

σF(R)={t|t∈R∧F(t)=“真”}其中F是表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。逻辑表达式F由逻辑运算符¬,∧,∨连接各算术表达式组成,算术表达式的基本形式为:X1

θY1

其中θ表示比较运算符,它可以是<,≤,>,≥,=或≠。X1,Y1等是属性名,或为常量,或为简单函数;属性名也可以用它的序号来代替。选择运算实际上是从关系R中选取使逻辑表达式F为真的元组,这是从行的角度进行的运算。

9/24/202431周口师范学院计算机科学系2.投影(Projection)投影:是从指定的关系中挑选出某些属性构成新的关系。或者说,选择运算的结果是一个表的列的子集。记作:

πA(R)={t[A]|t∈R}

其中A为R的属性列。投影操作是从列的角度进行的运算,投影的结果将取消由于取消了某些列而产生的重复元组。9/24/202432周口师范学院计算机科学系3.连接(Join)连接:连接运算是按照给定条件,把满足条件的各关系的所有元组,按照一切可能组合成新的关系。或者说,连接运算的结果是从两关系的广义笛卡尔积中选取属性间满足一定条件的元组。记作:RS={trts|tr∈R∧ts∈S∧tr[A]θ

ts[B]}

σAθB(R×S)其中A和B分别为R和S上度数相等且可比的属性组。θ

是比较运算符。连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组AθB9/24/202433周口师范学院计算机科学系连接运算中有两种最为重要也最为常用的连接,一种是等值连接,另一种是自然连接。等值连接:

θ为“=”的连接运算称为等值连接。它从R与S的广义笛卡尔积中选取A,B属性值相等的那些元组,即等值连接为:

RS={trts|

tr∈R∧ts∈S∧tr[A]

=

ts[B]}

π

R∪S(σr.A1=s.B1∧r.A2=s.B2∧…

∧r.An=s.Bn(R×S))自然连接:当连接的两关系有相同的属性名时,称这种连接为自然连接,并在结果中去掉重复列。它是等值连接的一个特例。即若R和S具有相同的属性组,则记作:

RS={trts|

tr∈R∧ts∈S∧tr[B]=

ts[B]}A=B9/24/202434周口师范学院计算机科学系4.除(Division)给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作:

R÷S={tr[X]|tr∈R∧πy(S)包含于Yx}其中Yx为x在R中的象集,x=tr[X].

除操作是同时从行和列角度进行运算。9/24/202435周口师范学院计算机科学系例:设关系R,S分别为下图中的(a)和(b)所示,R÷S的结果为(c)

在关系R中,A可以取四个值{a1,a2,a3,a4}。其中:

a1的象集为{(b1,c2),(b2,c3),(b2,c1)}a2的象集为{(b3,c7),(b2,c3)}a3的象集为{(b4,c6)}a4的象集为{(b6,c6)}S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)}显然只有a1的象集(B,C)a1包含了S在(B,C)属性组上的投影,所以RS={a1}9/24/202436周口师范学院计算机科学系ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2Aa1RSR÷Scba9/24/202437周口师范学院计算机科学系学号Sno姓名Sname性别Ssex年龄Sage系别Sdept95001李勇男20CS95002刘晨女19IS95003王敏女18MA95004张立男19ISStudent(a)设有一个学生-课程数据库,包括学生关系Student课程关系Course和选修关系SC。如下图示9/24/202438周口师范学院计算机科学系课程号Cno课程名Cname先行课Cpno学分Ccredit1数据库542数学2

温馨提示

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

评论

0/150

提交评论