
数据库系统概论(第五版)PPT第2章.ppt
114页数据库系统概论 An Introduction to Database Systemxx大学信息学院大学信息学院第二章第二章 关系数据库关系数据库关系数据库简介提出关系模型的是美国IBM公司的1970年提出关系数据模型E.F.Codd, “A Relational Model of Data for Large Shared Data Banks〞, Communication of the ACM,1970之后,提出了关系代数和关系演算的概念1972年提出了关系的第一、第二、第三范式1974年提出了关系的BC范式第二章 关系数据库2.1 关系数据结构及形式化定义2.2 关系操作2.3 关系的完整性2.4 关系代数2.5 *关系演算2.6 小结2.1 关系数据结构及形式化定义2.1.1 关系2.1.2 关系模式2.1.3 关系数据库2.1.4 关系模型的存储结构2.1.1 关系单一的数据结构----关系现实世界的实体以及实体间的各种联系均用关系来表示逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是一张二维表建立在集合代数的根底上 关系〔续〕 1. 域〔Domain〕 2. 笛卡尔积〔Cartesian Product〕 3. 关系〔Relation〕1. 域〔Domain〕域是一组具有相同数据类型的值的集合。
例:n整数n实数n介于某个取值范围的整数n指定长度的字符串集合n{‘男’,‘女’}n……………..2. 笛卡尔积〔Cartesian Product〕笛卡尔积给定一组域D1,D2,…,Dn,允许其中某些域是相同的 D1,D2,…,Dn的笛卡尔积为: D1×D2×…×Dn = {〔d1,d2,…,dn〕|diDi,i=1,2,…,n}所有域的所有取值的一个组合不能重复笛卡尔积〔续〕 元组〔Tuple〕笛卡尔积中每一个元素〔d1,d2,…,dn〕叫作一个n元组〔n-tuple〕或简称元组(张清玫,计算机专业,李勇)、 (张清玫,计算机专业,刘晨) 等 都是元组 分量〔Component〕笛卡尔积元素〔d1,d2,…,dn〕中的每一个值di 叫作一个分量张清玫、计算机专业、李勇、刘晨等都是分量 笛卡尔积〔续〕基数〔Cardinal number〕假设Di〔i=1,2,…,n〕为有限集,其基数为mi〔i=1,2,…,n〕,那么D1×D2×…×Dn的基数M为:笛卡尔积的表示方法笛卡尔积可表示为一张二维表表中的每行对应一个元组,表中的每列对应一个域笛卡尔积〔续〕例如例如,,给出给出3个域:个域:vD1=导师集合导师集合SUPERVISOR={张清玫,刘逸}{张清玫,刘逸}vD2=专业集合专业集合SPECIALITY={计算机专业,信息专业}{计算机专业,信息专业}vD3=研究生集合研究生集合POSTGRADUATE={李勇,刘晨,王敏}{李勇,刘晨,王敏}vD1,,D2,,D3的笛卡尔积为的笛卡尔积为笛卡尔积〔续〕v D1×D2×D3={={ (张清玫,计算机专业,李勇张清玫,计算机专业,李勇),,(张清玫,计算机专业,刘晨张清玫,计算机专业,刘晨),, (张清玫,计算机专业,王敏张清玫,计算机专业,王敏),,(张清玫,信息专业,李勇张清玫,信息专业,李勇),, (张清玫,信息专业,刘晨张清玫,信息专业,刘晨),,(张清玫,信息专业,王敏张清玫,信息专业,王敏),, (刘逸,计算机专业,李勇刘逸,计算机专业,李勇),,(刘逸,计算机专业,刘晨刘逸,计算机专业,刘晨),, (刘逸,计算机专业,王敏刘逸,计算机专业,王敏),,(刘逸,信息专业,李勇刘逸,信息专业,李勇),, (刘逸,信息专业,刘晨刘逸,信息专业,刘晨),,(刘逸,信息专业,王敏刘逸,信息专业,王敏) }}v基数为基数为2×2×3==12 笛卡尔积〔续〕笛卡尔积〔续〕3. 关系〔Relation〕〔1〕 关系D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为 R〔D1,D2,…,Dn〕 R:关系名n:关系的目或度〔Degree〕关系〔续〕〔2〕元组关系中的每个元素是关系中的元组,通常用t表示。
〔3〕单元关系与二元关系当n=1时,称该关系为单元关系〔Unary relation〕 或一元关系 当n=2时,称该关系为二元关系〔Binary relation〕关系〔续〕〔4〕关系的表示关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域〔5〕属性关系中不同列可以对应相同的域为了加以区分,必须对每列起一个名字,称为属性〔Attribute〕n目关系必有n个属性关系〔续〕〔6〕码候选码〔Candidate key〕 假设关系中的某一属性组的值能唯一地标识一个元组,那么称该属性组为候选码 简单的情况:候选码只包含一个属性全码〔All-key〕 最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码〔All-key〕关系〔续〕〔6〕码〔续〕主码假设一个关系有多个候选码,那么选定其中一个为主码〔Primary key〕主属性候选码的诸属性称为主属性〔Prime attribute〕不包含在任何侯选码中的属性称为非主属性〔Non-Prime attribute〕或非码属性〔Non-key attribute〕 关系〔续〕D1,D2,…,Dn的笛卡尔积的某个子集才有实际含义例:表2.1 的笛卡尔积没有实际意义 取出有实际意义的元组来构造关系关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) 假设:导师与专业:n:1, 导师与研究生:1:n主码:POSTGRADUATE〔假设研究生不会重名〕 SUPERVISORSPECIALITYPOSTGRADUATE张清玫张清玫计算机专业计算机专业李勇李勇张清玫张清玫计算机专业计算机专业刘晨刘晨刘逸刘逸信息专业信息专业王敏王敏关系〔续〕〔7〕三类关系根本关系〔根本表或基表〕实际存在的表,是实际存储数据的逻辑表示查询表查询结果对应的表视图表由根本表或其他视图表导出的表,是虚表,不对应实际存储的数据关系〔续〕〔8〕根本关系的性质① 列是同质的〔Homogeneous〕② 不同的列可出自同一个域其中的每一列称为一个属性不同的属性要给予不同的属性名③ 列的顺序无所谓,,列的次序可以任意交换④ 任意两个元组的候选码不能相同⑤ 行的顺序无所谓,行的次序可以任意交换根本关系的性质〔续〕⑥ 分量必须取原子值这是标准条件中最根本的一条 表2.3 非标准化关系SUPERVISORSPECIALITYPOSTGRADUATEPG1PG2张清玫张清玫计算机专业计算机专业李勇李勇刘晨刘晨刘逸刘逸信息专业信息专业王敏王敏小表小表2.1 关系数据结构2.1.1 关系2.1.2 关系模式2.1.3 关系数据库2.1.4 关系模型的存储结构2.1.2 关系模式1.什么是关系模式2.定义关系模式3. 关系模式与关系1.什么是关系模式关系模式〔Relation Schema〕是型关系是值关系模式是对关系的描述元组集合的结构属性构成属性来自的域 属性与域之间的映象关系完整性约束条件2.定义关系模式关系模式可以形式化地表示为: R〔U,D,DOM,F〕R 关系名U 组成该关系的属性名集合D U中属性所来自的域DOM 属性向域的映象集合F 属性间数据的依赖关系的集合定义关系模式 〔续〕例:导师和研究生出自同一个域——人,取不同的属性名,并在模式中定义属性向域的映象,即说明它们分别出自哪个域: DOM〔SUPERVISOR-PERSON〕= DOM〔POSTGRADUATE-PERSON〕= PERSON定义关系模式 〔续〕关系模式通常可以简记为 R (U) 或 R (A1,A2,…,An) R: 关系名 A1,A2,…,An : 属性名注:域名及属性向域的映象常常直接说明为 属性的类型、长度3. 关系模式与关系关系模式 对关系的描述 静态的、稳定的关系 关系模式在某一时刻的状态或内容 动态的、随时间不断变化的关系模式和关系往往笼统称为关系 通过上下文加以区别2.1 关系数据结构2.1.1 关系2.1.2 关系模式2.1.3 关系数据库2.1.4 关系模型的存储结构2.1.3 关系数据库关系数据库 在一个给定的应用领域中,所有关系的集合构成一个关系数据库关系数据库的型与值 关系数据库的型: 关系数据库模式,是对关系数据库的描述 关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库2.1 关系数据结构2.1.1 关系2.1.2 关系模式2.1.3 关系数据库2.1.4 关系模型的存储结构2.1.4 关系模型的存储结构关系数据库的物理组织有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成有的关系数据库管理系统从操作系统那里申请假设干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理第二章 关系数据库2.1 关系模型概述2.2 关系操作2.3 关系的完整性2.4 关系代数2.5 *关系演算2.6 小结2.2.1 根本的关系操作 常用的关系操作查询操作:选择、投影、连接、除、并、差、交、笛卡尔积选择、投影、并、差、笛卡尔基是5种根本操作数据更新:插入、删除、修改关系操作的特点集合操作方式:操作的对象和结果都是集合,一次一集合的方式2.2.2 关系数据库语言的分类 关系代数语言用对关系的运算来表达查询要求代表:ISBL关系演算语言:用谓词来表达查询要求元组关系演算语言谓词变元的根本对象是元组变量代表:APLHA, QUEL域关系演算语言 谓词变元的根本对象是域变量代表:QBE具有关系代数和关系演算双重特点的语言代表:SQL〔Structured Query Language〕 第二章 关系数据库2.1 关系数据结构及形式化定义2.2 关系操作2.3 关系的完整性2.4 关系代数2.5 *关系演算2.6 小结关系的三类完整性约束实体完整性和参照完整性关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持用户定义的完整性应用领域需要遵循的约束条件,表达了具体领域中的语义约束 2.3 关系的完整性2.3.1 实体完整性2.3.2 参照完整性2.3.3 用户定义的完整性2.3.1 实体完整性规那么2.1 实体完整性规那么〔Entity Integrity〕假设属性A是根本关系R的主属性,那么属性A不能取空值空值就是“不知道〞或“不存在〞或“无意义〞的值 例:选修〔学号,课程号,成绩〕“学号、课程号〞为主码“学号〞和“课程号〞两个属性都不能取空值实体完整性〔续〕实体完整性规那么的说明〔1〕实体完整性规那么是针对根本关系而言的。
一个根本表通常对应现实世界的一个实体集〔2〕现实世界中的实体是可区分的,即它们具有某种唯 一性标识〔3〕关系模型中以主码作为唯一性标识〔4〕主码中的属性即主属性不能取空值 主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第〔2〕点相矛盾,因此这个规那么称为实体完整性2.3 关系的完整性2.3.1 实体完整性2.3.2 参照完整性2.3.3 用户定义的完整性2.3.2 参照完整性1. 关系间的引用2. 外码3. 参照完整性规那么1. 关系间的引用在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用[例2.1] 学生实体、专业实体 学生〔学号,姓名,性别,专业号,年龄〕 专业〔专业号,专业名〕v学生关系引用了专业关系的主码学生关系引用了专业关系的主码“专业号〞专业号〞v 学生关系中的学生关系中的“专业号〞值必须是确实存在的专业的专业号专业号〞值必须是确实存在的专业的专业号主码主码主码主码关系间的引用〔续〕例[2.2] 学生、课程、学生与课程之间的多对多联系 学生〔学号,姓名,性别,专业号,年龄〕 课程〔课程号,课程名,学分〕 选修〔学号,课程号,成绩〕关系间的引用〔续〕例[2.3] 学生实体及其内部的一对多联系 学生〔学号,姓名,性别,专业号,年龄,班长〕v“学号〞是主码,学号〞是主码,“班长〞是外码,它引用了本关系的班长〞是外码,它引用了本关系的“学号〞学号〞 v“班长〞班长〞 必须是确实存在的学生的学号必须是确实存在的学生的学号 2.外码〔Foreign Key〕设F是根本关系R的一个或一组属性,但不是关系R的码。
如果F与根本关系S的主码Ks相对应,那么称F是R的外码根本关系R称为参照关系〔Referencing Relation〕根本关系S称为被参照关系〔Referenced Relation〕 或目标关系〔Target Relation〕外码〔续〕[例2.1]中学生关系的“专业号〞与专业关系的主码“专业号〞相对应“专业号〞属性是学生关系的外码专业关系是被参照关系,学生关系为参照关系 外码〔续〕[例2.2]中 选修关系的“学号〞 与学生关系的主码“学号〞相对应 选修关系的“课程号〞与课程关系的主码“课程号〞相对应“学号〞和“课程号〞是选修关系的外码学生关系和课程关系均为被参照关系选修关系为参照关系 外码〔续〕[例2.3]中“班长〞与本身的主码“学号〞相对应“班长〞是外码学生关系既是参照关系也是被参照关系 外码〔续〕关系R和S不一定是不同的关系目标关系S的主码Ks 和参照关系的外码F必须定义在同一个〔或一组〕域上外码并不一定要与相应的主码同名 当外码与相应的主码属于不同关系时,往往取相同的名 字,以便于识别3. 参照完整性规那么规那么2.2 参照完整性规那么 假设属性〔或属性组〕F是根本关系R的外码它与根本关系S的主码Ks相对应〔根本关系R和S不一定是不同的关系〕,那么对于R中每个元组在F上的值必须为:或者取空值〔F的每个属性值均为空值〕或者等于S中某个元组的主码值参照完整性规那么〔续〕[例2.1]中学生关系中每个元组的“专业号〞属性只取两类值:〔1〕空值,表示尚未给该学生分配专业〔2〕非空值,这时该值必须是专业关系中某个元组的“专业号〞值,表示该学生不可能分配一个不存在的专业参照完整性规那么〔续〕[例2.2] 中选修〔学号,课程号,成绩〕“学号〞和“课程号〞可能的取值 : 〔1〕选修关系中的主属性,不能取空值 〔2〕只能取相应被参照关系中已经存在的主码值参照完整性规那么〔续〕[例2.3] 中学生〔学号,姓名,性别,专业号,年龄,班长〕“班长〞属性值可以取两类值:〔1〕空值,表示该学生所在班级尚未选出班长〔2〕非空值,该值必须是本关系中某个元组的学号值2.3 关系的完整性2.3.1 实体完整性2.3.2 参照完整性2.3.3 用户定义的完整性2.3.3 用户定义的完整性针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能用户定义的完整性〔续〕例: 课程〔课程号,课程名,学分〕“课程号〞属性必须取唯一值非主属性“课程名〞也不能取空值“学分〞属性只能取值{1,2,3,4}第二章 关系数据库2.1 关系模型概述2.2 关系数据结构2.3 关系的完整性2.4 关系代数2.5 *关系演算2.6 小结2.4 关系代数关系代数是一种抽象的查询语言,它用对关系的运算来表达查询关系代数运算对象是关系运算结果亦为关系关系代数的运算符有两类:集合运算符和专门的关系运算符传统的集合运算是从关系的“水平〞方向即行的角度进行专门的关系运算不仅涉及行而且涉及列表表2.4 关系代数运算符关系代数运算符2.4 关系代数运 算 符运 算 符含 义含 义集合集合运算符运算符∪∪并并-差差∩交交×笛卡尔积笛卡尔积专门的专门的关系关系运算符运算符σ选择选择π投影投影连接连接÷除除 2.4 关系代数 传统的集合运算 专门的关系运算〔1〕 并〔Union〕R和S具有相同的目n〔即两个关系都有n个属性〕相应的属性取自同一个域R∪S 仍为n目关系,由属于R或属于S的元组组成 R∪S = { t|t R∨t S }并〔续〕ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a2b2c1a1b3c2ABCa1b2c2a1b3c2a2b2c1RSRUS〔2〕差〔Difference〕R和S 具有相同的目n 相应的属性取自同一个域R - S 仍为n目关系,由属于R而不属于S的所有元组组成 R -S = { t|tR∧tS }差〔续〕ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABCa1b2c2a1b3c2a2b2c1RSR-S〔3〕 交〔Intersection〕R和S具有相同的目n相应的属性取自同一个域R∩S仍为n目关系,由既属于R又属于S的元组组成 R∩S = { t|t R∧t S } R∩S = R –(R-S〕交 〔续〕ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR ∩ S〔4〕 笛卡尔积〔Cartesian Product〕严 格 地 讲 应 该 是 广 义 的 笛 卡 尔 积 〔 Extended Cartesian Product〕 R: n目关系,k1个元组S: m目关系,k2个元组R×S 列:〔n+m〕列元组的集合元组的前n列是关系R的一个元组后m列是关系S的一个元组行:k1×k2个元组R×S = {tr ts |tr R ∧ tsS }笛卡尔积 〔续〕ABCa1b1c1a1b2c2a2b2c1R.A R.BR.CS.AS.BS.Ca1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR × S 2.4 关系代数2.4.1 传统的集合运算2.4.2 专门的关系运算2.4.2 专门的关系运算先引入几个记号 〔1〕 R,tR,t[Ai] 设关系模式为R(A1,A2,…,An) 它的一个关系设为R tR表示t是R的一个元组 t[Ai]那么表示元组t中相应于属性Ai的一个分量 专门的关系运算〔续〕〔2〕 A,t[A], A 假设A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一局部,那么A称为属性列或属性组。
t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合 A那么表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组 专门的关系运算〔续〕〔3〕 tr ts R为n目关系,S为m目关系 tr R,tsS, tr ts称为元组的连接 tr ts是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组 专门的关系运算〔续〕〔4〕象集Zx 给定一个关系R〔X,Z〕,X和Z为属性组 当t[X]=x时,x在R中的象集〔Images Set〕为: Zx={t[Z]|t R,t[X]=x} 它表示R中属性组X上值为x的诸元组在Z上分量的集合 专门的关系运算〔续〕x1在R中的象集 Zx1 ={Z1,Z2,Z3},x2在R中的象集 Zx2 ={Z2,Z3},x3在R中的象集 Zx3={Z1,Z3}象集举例象集举例 专门的关系运算〔续〕1. 选择2. 投影3. 连接4. 除运算专门的关系运算〔续〕(a) Student学生学生-课程数据库课程数据库: 学生关系学生关系Student、课程关系、课程关系Course和选修和选修关系关系SC学号学号Sno姓名姓名Sname性别性别Ssex年龄年龄Sage所在系所在系Sdept201215121李勇李勇男男20CS201215122刘晨刘晨女女19CS201215123王敏王敏女女18MA201215125张立张立男男19IS专门的关系运算〔续〕课程号课程号Cno课程名课程名Cname先行课先行课Cpno学分学分Ccredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言64Course(b)专门的关系运算〔续〕 (c)SC学号学号Sno课程号课程号Cno成绩成绩Grade2012151211922012151212852012151213882012151222902012151223801. 选择〔Selection〕 选择又称为限制〔Restriction〕选择运算符的含义在关系R中选择满足给定条件的诸元组 σF(R) = {t|tR∧F(t)= '真'}F:选择条件,是一个逻辑表达式,取值为“真〞或“假〞根本形式为:X1θY1θ表示比较运算符,它可以是>,≥,<,≤,=或<>选择〔续〕选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算σ选择〔续〕[例] 查询信息系〔IS系〕全体学生。
σSdept = 'IS' (Student) 结果: SnoSnameSsexSageSdept201215125张立张立男男19IS选择〔续〕[例] 查询年龄小于20岁的学生 σSage < 20(Student) 结果: SnoSnameSsexSageSdept201215122刘晨刘晨女女19IS201215123王敏王敏女女18MA201215125张立张立男男19IS2. 投影〔Projection〕 从R中选择出假设干属性列组成新的关系 πA(R) = { t[A] | t R } A:R中的属性列 投影操作主要是从列的角度进行运算 投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组〔防止重复行〕π投影〔续〕[例2.6] 查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影 πSname,Sdept(Student)结果:SnameSdept李勇李勇CS刘晨刘晨CS王敏王敏MA张立张立IS投影〔续〕[例] 查询学生关系Student中都有哪些系。
πSdept(Student)结果:SdeptCSISMA3. 连接〔Join〕 连接也称为θ连接连接运算的含义从两个关系的笛卡尔积中选取属性间满足一定条件的元组 R S = { | tr R∧ts S∧tr[A]θts[B] }A和B:分别为R和S上度数相等且可比的属性组θ:比较运算符 连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组 AθBtr ts 连接〔续〕 两类常用连接运算等值连接〔equijoin〕 θ为“=〞的连接运算称为等值连接从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为: R S = { | tr R∧ts S∧tr[A] = ts[B] } A=Btr ts 连接〔续〕 自然连接〔Natural join〕 自然连接是一种特殊的等值连接 两个关系中进行比较的分量必须是相同的属性组 在结果中把重复的属性列去掉 自然连接的含义 R和S具有相同的属性组B R S = { [U-B] | tr R∧ts S∧tr[B] = ts[B] } tr ts连接〔续〕一般的连接操作是从行的角度进行运算。
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算 AθBRS连接〔续〕ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b22RSv[例例]关系关系R和关系和关系S 如下所示:如下所示:连接〔续〕一般连接 R S的结果如下: C<EAR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310连接〔续〕 等值连接 R S 的结果如下:R.B=S.B AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32连接〔续〕 自然连接 R S的结果如下: ABCEa1b153a1b267a2b3810a2b382连接〔续〕悬浮元组〔Dangling tuple〕两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组连接〔续〕外连接〔Outer Join〕如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接左外连接(LEFT OUTER JOIN或LEFT JOIN)只保存左边关系R中的悬浮元组右外连接(RIGHT OUTER JOIN或RIGHT JOIN)只保存右边关系S中的悬浮元组连接〔续〕以下图是例中关系以下图是例中关系R和关系和关系S的外连接的外连接 ABCEa1b153a1b267a2b3810a2b382a2b412NULLNULLb5NULL2连接〔续〕图图(b)是例中关系是例中关系R和关系和关系S的左外连接的左外连接,图图(c)是右外连接是右外连接 ABCEa1b153a1b267a2b3810a2b382a2b412NULLABCEa1b153a1b267a2b3810a2b382NULLb5NULL2图图(b) 图图(c)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]|trR∧πY(S)Yx} Yx:x在R中的象集,x = tr[X]除运算〔续〕除操作是同时从行和列角度进行运算 ÷RS除运算〔续〕[例例2.9]设关系设关系R、、S分别为以下图的分别为以下图的(a)和和(b),,RS的结果为图的结果为图(c) ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2RR÷SSAa1除运算〔续〕在关系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的象集包含了S在(B,C)属性组上的投影 所以 R÷S ={a1} 综合举例以学生-课程数据库为例 [例] 查询至少选修1号课程和3号课程的学生号码 。
首先建立一个临时关系K: 然后求:πSno,Cno(SC)÷K Cno 1 3综合举例〔续〕[例2.10]续 πSno,Cno(SC)202115121象集{1,2,3}202115122象集{2,3} K={1,3} 于是:πSno,Cno(SC)÷K={202115121}SnoCno20121512112012151212201215121320121512222012151223综合举例〔续〕[例] 查询选修了2号课程的学生的学号 πSno(σCno=‘2’(SC))={202115121,202115122}[例] 查询至少选修了一门其直接先行课为5号课程的学生姓名 πSname(σCpno=‘5’(Course SC πSno,Sname (Student)) 或 πSname (πSno (σCpno='5' (Course) SC) πSno,Sname (Student)) [例] 查询选修了全部课程的学生号码和姓名 πSno,Cno(SC)÷πCno(Course) πSno,Sname(Student) 小结 关系代数运算关系代数运算并、差、交、笛卡尔积、投影、选择、连接、除根本运算并、差、笛卡尔积、投影、选择交、连接、除可以用5种根本运算来表达 引进它们并不增加语言的能力,但可以简化表达小结〔续〕 关系代数表达式关系代数运算经有限次复合后形成的式子典型关系代数语言ISBL〔Information System Base Language〕由IBM United Kingdom研究中心研制用于PRTV〔Peterlee Relational Test Vehicle〕实验系统 第二章 关系数据库2.1 关系模型概述2.2 关系数据结构2.3 关系的完整性2.4 关系代数2.5 *关系演算2.6 小结2.6 小结关系数据库系统是目前使用最广泛的数据库系统 关系数据库系统与非关系数据库系统的区别:关系系统只有“表〞这一种数据结构非关系数据库系统还有其他数据结构,以及对这些数据结构的操作 小结〔续〕关系数据结构 关系域笛卡尔积关系关系,属性,元组候选码,主码,主属性根本关系的性质 关系模式 关系数据库关系模型的存储结构小结〔续〕关系操作 查询l选择、投影、连接、除、并、交、差 数据更新l插入、删除、修改小结〔续〕关系的完整性约束 实体完整性 参照完整性l外码 用户定义的完整性小结〔续〕关系数据语言 关系代数语言 关系演算语言l元组关系演算语言 ALPHAl域关系演算语言 QBE。
