数据库原理2 关系数据库

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章关系数据库2-5章为本课程重点与难点关系数据库的理论基础1970,E.F.Codd“ARelationalModelofDataforSharedDataBanks”现代主流数据库几乎全部支持关系模型Oracle(甲骨文),Sybase,IBMDB2,MSSQLServer,Ingres2.1关系模型概述关系模型由关系数据库、关系操作集合和关系完整性约束三部分组成。一.单一的数据结构--关系实体和实体之间的联系都用关系描述二.关系操作就关系模型而言,仅仅给出了关系操作的能力,并不给定(限定)RDBMS语言的语法要求。关系操作的特点:一次一集合的操作方式Set-at-a-Time操作的对象和结果都是关系。三种具有相同表达能力的抽象查询语言:关系代数ISBL元组关系演算语言ALPHA,QUEL域关系演算语言QBESQL则是介于关系代数和关系演算之间的标准查询语言。由IBM提出,是应用得最广泛的关系数据库标准语言。三.关系的三类完整性约束条件关系模型必须满足:实体完整性和参照完整性约束。应用领域中的大量语义约束则由DBMS实现的用户定义完整性保证。注意:这是由DBMS来保证的,而非应用程序保证。2.2关系数据结构及其形式化定义从集合论的角度给出关系数据结构的形式化定义。(需要离散数学集合论的概念)2.2.1关系(Relation)1.域定义2.1:域是具有相同数据类型的值的集合。如自然数,全班同学的名字等。2.2笛卡儿集(卡氏集)定义2.2给定一组域D1,D2,…,Dn,这些域中可以有相同的,D1,D2,…,Dn的笛卡儿集为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…n},其中每一个元素称为一个n元组,元素中的每个值称为一个分量。例:D1={大,中,小},D2={红,绿}例:D1={大,中,小},D2={红,绿}D1×D2={(大,红),(大,绿),(中,红),(中,绿),(小,红),(小,绿)}共有3×2=6个2元组注意:集合论中笛卡儿集不满足交换率,即笛卡儿集的元组有序。基数的概念:若Di(i=1,2,…,n)为有限集,其基数为|Di|,则D1×D2×…×Dn的基数为:|D1|×|D2|×…×|Dn|3.关系定义2.3D1×D2×…×Dn的任意子集叫做在域D1,D2,…,Dn上的关系,可记做:R(D1,D2,…,Dn),R为关系名,n是关系的目或度(degree)。注意:1.这里的“子集”是“任意子集”,包括空集。2.笛卡儿集不满足交换率,而关系通过给关系的列附加属性名的方式取消元组的有序性。3.按2.3的定义,关系可以是无限集。通常我们在关系数据模型中限定关系为有限关系。候选码--若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为该关系的一个候选码(CandidateKey)。一个关系可能有多个候选码,则选定其中一个作为主码(PrimaryKey)。包含在任何候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。全码(All-Key)--关系模式的所有属性组构成此关系模式的唯一候选码。基本关系六性质1.列是同质的;2.不同列可出自同一个域,每一列为一个属性,不同属性(列)给不同属性名;3.列的顺序可任意交换;4.任意两个元组不能完全相同;5.行的顺序可任意交换;6.每一分量是不可分的数据项。记忆方法:三列两行一分量。注意:在许多实际关系数据库产品中,基本表并不完全具有这六条性质,例如,有的数据库产品(如FoxPro)仍然区分了属性顺序和元组的顺序;许多关系数据库产品中,例如Oracle,FoxPro等,它们都允许关系表中存在两个完全相同的元组。2.2.2关系模式关系模式是对关系的描述。(是对型的描述)需描述元组集合的结构:由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系。此外,关系模式应刻划出完整性约束条件。定义2.4关系的描述称为关系模式,可表述为:R(U,D,dom,F)其中R为关系名,U为组成该关系地属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集。关系模式通常可以简记为:R(U)或R(A1,A2,…,AN)其中R为关系名,A1,A2,…,AN为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。关系模式是静态度、稳定的,而关系是动态的、随时间变化的,两者是型与值的关系。2.2.3关系数据库在给定应用领域中,用于描述所有实体和实体间的联系的关系的集合构成一个关系数据库。同样,关系数据库也有型和值之分。型:关系数据库模式是对关系数据库的描述。值:一般就称为关系数据库。2.3关系的完整性关系模型的完整性规则是对关系的某种约束条件。关系模型的三类完整性:1.实体完整性2.参照完整性3.用户定义的完整性其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为是关系的两个不变性,应该由关系系统自动支持。一、实体完整性实体完整性规则(规则2.1):每一关系必有一主码,构成主码的各属性值均不能取空值。实体完整性规则规定基本关系的所有主码的各属性都不能取空值,而不仅是主码整体不能取空值。例如学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”都不能取空值,而不是整体不为空。实体完整性可以引申一下,主码也不能取重复值。有关实体完整性的说明:(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。(名字怎么来的)(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主码作为唯一标识。(4)主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“不确定”的值。二、参照完整性现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系之间的引用。引用的时候,必须取基本表中已经存在的值。由此引出参照的引用规则。参照完整性规则就是定义外码与主码之间的引用规则。定义2.5设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreignkey),并称基本关系R为参照关系(Referencingrelation),基本关系S为被参照关系(Referencedrelation)或目标关系(Targetrelation)。关系R和S不一定是不同的关系。参照完整性规则(规则2.2):若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。例如,学生选课系统,选课关系的学号按实体完整性要求,不能为空;按参照完整性要求,只能选学生关系中的学号,表示语义关系“只有注册的学生才能选课”。课程号也类似(请同学们自己考虑)。三、用户定义的完整性(User-definedintegrity)实体完整性和参照性适用于任何关系数据库系统。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。2.4关系代数本节要求给定关系和关系代数表达式,要会算。给定关系模式和查询(语义)要求,要会写关系代数表达式。关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以关系代数的运算按运算符的不同,主要分为传统的集合运算和专门的关系运算两类。2.4.1传统的集合运算是四种二目运算:∪∩-×,把关系看作元组的集合,于是,这四种运算与传统集合运算类似。其中,∪∩-三种运算要求参与运算的两个关系R,S具有相同的目n,且相应属性取自同一个域。1.并∪:R∪S={t|t∈R∨t∈S}2.交∩:R∩S={t|t∈R∧t∈S}3.差-:R-S={t|t∈R∧フt∈S}⒋广义笛卡尔积(Extendedcartesianproduct)元组连接的记号:R为n目关系,S为m目关系。trts称为元组的连接(Concatenation)。它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。记作:R×S={trts|tr∈R∧ts∈S}若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。2.4.2专门的关系运算一般包括选择、投影、连接和除。1.选择选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:σF(R)={t|t∈R∧F(t)=‘真’}其中F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。逻辑表达式F的基本形式为:X1θY1[φX2θY2]θ表示比较运算符,它可以是>、≥、<、≤、=或≠。X1、Y1等是属性名或常量或简单函数。属性名也可以用它的序号来代替。φ表示逻辑运算符,它可以是フ、∧或∨。因此选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。设有一个学生-课程关系数据库,包括学生关系Student、课程关系Course和选修关系SC。(下面的例子都针对这三个关系进行运算。)例1查询信息系(IS系)全体学生σSdept=‘IS’(Student)或σ4='IS'(Student)例2查询年龄小于20岁的元组σSage20(Student)或σ420(Student)。补充例1:查询信息系的年龄小于20岁的学生补充例1:查询信息系的年龄小于20岁的学生σSdept=‘IS’∧Sage20(Student)补充例1:查询信息系的年龄小于20岁的学生σSdept=‘IS’∧Sage20(Student)当然也可以表示为σSdept=‘IS’(Student)∩σSage20(Student)(注:双目运算符的优先级低于单目运算符)2.投影(Projection)先介绍与投影有关的两个记号:一.(元组属性分量记号)设关系模式为R(A1,A2,…,An)。它的一个关系设为R。t∈R表示t是R的一个元组。t[Ai]则表示元组t中相应于属性Ai的一个分量。二.(元组属性列分量记号)若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或域列。フA则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。关系R上的投影是从R中选择出若干属性列组成新的关系。记作:ΠA(R)={t[A]|t∈R}其中A为R中的属性列。基本思想是从关系中消除某些属性,投影也可能消除掉某些行。因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。例3查询学生关系Student在学生姓名和所在系两个属性上的投影ΠSname,Sdept(Student)或Π2,5(Student)例4查询学生关系Student中都有哪些系,即查询学生关系Student在所在系属性上的投影:ΠSdept(Student)补充例2:(投影与选择的混合运算)查询信息系学生的姓名和年龄。补充例2:(投影与选择的混合运算)查询信息系学生的姓名和年龄。ΠSname,SageσSdept=‘IS’(Student)(注:单

1 / 100
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功