关系运算和完整性约束第三章第三章概述1在用户看来,一个关系就是一张二维表2关系模型可以理解为二维表格的定义3关系模型的数据操作:主要有选择(Select)、投影(Project)、连接(Join)、除(Division)、并(Union)、交(Intersection)、差(Difference),查询(Query),增加(Insert)、删除(Delete)、修改(Update)等更新操作。3关系操作的表示方式:代数方式、逻辑方式以及结合两者特点的方式。第三章概述4、关系语言可以分三类关系代数语言例如ISBL元组关系演算语言例如ALPHA,QUEL关系数据语言关系演算语言域关系演算语言例如QBE具有关系代数和关系演算双重特点的语言例如SQL5、完整性约束:关系模型允许定义三类完整性约束,实体完整性;参照完整性;用户定义的完整性。返回3.1关系的定义定义3.1给定一组集合D1,D2,…,Dn,且这些集合可以相同,定义D1,D2,…,Dn的笛卡尔积(CartesianProduct)为:D1D2…Dn={(d1,d2,…,dn)|diDi,i=l,2,…,n}其中的每一个元素(d1,d2,…,dn)叫做一个n元组(n-tuple),元素中第i个值di叫做第i个分量。3.1关系的定义注意:关系和笛卡尔(数学中)的区别:关系是笛卡尔积的有限子集。无限关系在数据库系统中是无意义的。由于笛卡尔积不满足交换律,即(d1,d2…,dn)≠(d1,d2…,dn)但关系满足交换律,即(d1,d2…,dn)=(d1,d2…,dn)3.1关系的定义定义3.2笛卡尔积D1D2…Dn的任一子集称为D1,D2,…,Dn上的一个关系。集合D1,D2,…,Dn是关系中元组的取值范围,称为关系的域(Domain),n称为关系的度(Degree)。度为n的关系称为n元关系。例如n=1(n=2)的关系称为一元(二元)关系。返回关系的性质1.每一列中的值是同类型的数据,都来自同一个域。不同的列可以有相同的域,每一列称为一个属性,用属性名标识。2.元组中的每个分量是不可分的数据项3.关系中的各个元组是不同的,即不允许有重复的元组。见下页例子说明。4.元组的次序是无关紧要的,列的次序也是无关的。3.2关系的性质表3-2职工信息表姓名职业兼职李宏行政辅导员张敏教师辅导员刘丽工人行政表3-3教师关系表(a)表3-4教师关系表(b)表3-5教师关系表(c)姓名性别姓名性别性别姓名王平男李丽女男王平李丽女王平男女李丽返回3.3关系的码1.关系的码是关系的一个重要概念,关系数据库要求关系中的每一个元组具有唯一性。2.关键码:在关系模式中,必定存在一个属性(属性组)可以唯一确定关系中别的属性的值。这个属性(属性组)就是关系模式的关键码。3.关键码根据细节不同通常分为如下几类:超码(SuperKey)在关系中能唯一标识元组的属性集称为关系的超码。候选码(CandidateKey)不包含多余属性的超码称为候选码。对于某个关系,可能存在多个候选码。3.3关系的码4.主码(PrimaryKey)从候选码中任选一个作为现行关键码,则该关键码称为主码。一个关系的主码只能有一个,主码一旦确定通常不变。5.外码(ForeignKey)不是当前关系的候选码,却是另一个关系的候选码。关系之间的连接通常利用外码实现。返回表1学生表格学号姓名姓名兼职返回表2课程表课程号课程名学分表3选课表格学号课程号成绩3.4数据的完整性关系模式:对一类实体特征的结构性描述,即对关系的结构性描述,该描述一般包括关系名、属性名、属性域的类型和长度,属性之间固有的依赖联系等。若U={A1,A2…,An}为关系R的属性集,则关系模式简记为R(U)或R(A1,A2,…,An)关系模式和关系的区别和联系:关系模式是表格的定义,关系是一个具体的表格。关系数据库也有型和值之分3.4完整性规则在数据库系统中,为了维护数据库中数据与现实世界的一致性,计算机和现实世界的数据之间必须遵循一定的约束规则,关系模型定义三类完整性:实体完整性,参照完整性和用户定义完整性。实体完整性规则(EntityIntegrity):关系中每一个元组的主码(主键)属性不能重复,并且不能取空值。空值:当前“不知道”的值,它既不是0也不是空字符,用NULL表示。1.参照完整性规则(ReferenceIntegrity):设属性组A是关系R的外键且A又是关系S的主键,则对于R中的每一个元组在属性A上的值必须为:空值或者等于S中某一个元组的主键值。2.谓参照,就是关系R与另一关系S之间的联系,这种联系是通过其相同属性来建立的。参照完整性规则给出了关系之间建立联系的约束条件。3.实体完整性和参照完整性都是关系模型必须满足的完整性约束条件,这些约束条件由RDBMS自动支持。4.在实践中,能否取空值取决于生活的理解3.4完整性规则3、用户定义的完整性规则(User-definedIntegrity):用户根据具体应用而对数据附加的约束条件。说明:现在的商品化RDBMS提供了定义和检查这类完整性约束的机制。3.4完整性规则3.4完整性约束类型1.完整性控制是围绕完整性约束条件进行的,根据完整性约束条件的作用对象和状态,可将完整性约束分为以下类型:2.静态属性约束:对属性取值的说明。主要包括:数据类型、格式、取值范围、空值的约束3.静态元组约束:规定组成一个元组的各列的值之间的约束关系。4.静态关系约束:关系的各元组之间或者若干关系之间常常存在各种联系或者约束。实体完整性、参照完整性、函数依赖和统计约束。3.4完整性约束类型5.动态属性约束:修改定义或者修改属性时应满足的约束条件。6.动态元组约束:修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。7.动态关系约束:关系变化前后状态上的限制条件。例如:事务一致性约束条件。3.4完整性控制机制一个完善的完整性控制机制应该具有以下三个方面的功能:定义功能:为用户提供定义完整性约束条件的命令或工具。检查功能:能够自动检查用户发出的操作请求是否违背了完整性约束条件。违约处理:当发现用户的操作请求违背了完整性约束条件时,能够自动采取一定的措施确保数据的完整性不遭破坏。3.4完整性控制机制由于实体完整性的定义和控制比较容易实现,因此,下面主要讨论实现参照完整性需要考虑的几个问题。1.外码空值问题2.被参照关系中删除元组问题3.在参照关系中插入元组问题4.元组中主码的修改问题综上所述,DBMS的参照完整性机制,在提供定义主码和外码机制的同时,还需要提供不同的删除、插入和修改策略供用户选择。至于选择哪种策略,一般根据实际需求确定。返回3.5关系代数3.5.1传统的集合运算3.5.2专门的关系运算返回集合运算符∪-∩×并差交广义笛卡尔积比较运算符>≥<≤=≠大于大于等于小于小于等于等于不等于运算符含义运算符含义关系代数运算符1、并运算:关系R和S的并是一个新的关系,记为R∪S={t|tR∨tS},它由属于R或属于S的所有元组构成。2、差运算:关系R和S的差是一个新的关系,记为R-S={t|tR∧tS},它由属于R但不属于S的元组构成。3、交运算:关系R和S的交是一个新的关系,记为R∩S={t|tR∧tS},它由属于R同时也属于S的元组构成。3.5.1传统的集合运算并ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR∪S差ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABCa1b2c2a1b3c2a2b2c1RSR-S交ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR∩S5、广义笛卡尔积:设R为m元关系,S为n元关系,则R与S的广义笛卡尔积R×S是一个(m+n)元关系,其中的每个元组的前m个分量是R中的一个元组,后n个分量是S中的一个元组R×S={(a1,a2,…,am,b1,b2,…,bn)|(a1,a2,…,am)R∧(b1,b2,…,bn)S}R×S={trts|trR∧tsS}说明:(1)若R有k1个元组,S为k2元关系,则R×S有(k1×k2)个元组,即广义笛卡尔积(2)并、差、笛卡儿积、投影和选择常称为关系代数的五个基本元组(操作),其余则成为关系代数的组合运算。返回3.5.1传统的集合运算广义笛卡尔积ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b1c1a1b1c1a1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR×SABCa1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c13.5.2专门的关系运算选择运算(Select):从关系R中选取满足给定条件的元组构成一个新的关系。选择运算记作:σF(R)={t|tR∧F(t)}其中σ是选择运算符,F是限定条件的布尔表达式。由逻辑运算符∨、∧和┐等连接各个算术表达式组成。算术表达式的基本形式为XY,其中X,Y可以是属性名,常量或简单函数,算术比较运算符{,,,,,}。选择选择运算是从行的角度进行的运算举例设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC。σ学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept11001李勇男20CS11002刘晨女19IS11003王敏女18MA11004张立男19IS(a)Student(b)Course课程号课程名先行课学分CnoCnameCpnoCcredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64(c)SC学号课程号成绩SnoCnoGrade1100119211001285110013881100229011002380选择[例]查询信息系(IS系)全体学生σSdept='IS'(Student)或σ5='IS'(Student)结果:SnoSnameSsexSageSdept11002刘晨女19IS11004张立男19IS选择[例]查询年龄小于20岁的学生σSage20(Student)或σ420(Student)结果:SnoSnameSsexSageSdept11002刘晨女19IS11003王敏女18MA11004张立男19IS投影运算(Projection):从一个关系R中选取所需要的列组成一个新关系,投影运算记为:∏A(R)=(R)={t[A]|tR}其中∏是投影运算符,A为关系R属性的子集,t[A]为R中元组相应于属性集A的分量,i1,i2,…,ik表示A中属性在关系R中的顺序号。3.5.2专门的关系运算kiii,,,21投影运算(Projection):投影操作主要是从列的角度进行运算但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)π[例3]查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影πSname,Sdept(Student)或π2,5(Student)结果:SnameSdept李勇CS刘晨IS王敏MA张立IS投影[例]查询学生关系Student中都有哪些系πSdept(Student)结果:SdeptCSISMA3.5.2专门的关系运算连接运算(Join):从二个关系的广义笛卡尔积中选取满足一定连接条件的元组,记为:RS=R.AS.B(R×S)R.AS.B其中是连接运算符,A、B分别为R、S上度数相等且可比较的属性集,是算术比较符,R.AS.B是连接条件。•等值连接:θ为=时的情况,而其余的连接统称为非等值连接。自然连接(Naturaljoin):两个关系进行连接比较的属性列完全相同的等值连接,且结果关系中