《关系模型和关系运算理论.ppt》由会员分享,可在线阅读,更多相关《关系模型和关系运算理论.ppt(67页珍藏版)》请在三一办公上搜索。
1、第2章 关系模型和运算理论,王传栋南京邮电大学计算机学院软件工程系,2,内容提纲,1)基本概念关系模型关键码(主键和外键)关系的定义和性质三类完整性规则过程性语言与非过程性语言2)关系代数五个基本操作四个组合操作七个扩充操作,3,内容提纲,3)关系演算元组关系演算和域关系演算的原子公式、公式的定义关系演算的安全性和等价性4)关系代数表达式的优化关系代数表达式的等价及等价转换规则启化式优化算法5)关系逻辑谓词、原子、规则和查询规则的安全性用规则模拟关系代数表达式,4,引言,关系模型是当前的主流逻辑数据模型 由IBM公司的高级研究员于1970年提出 应用广泛的原因:单一的数据建模概念 坚实的数学理
2、论基础 提供高级接口:数据库语言SQL,5,2.1 关系模型的基本概念,基本术语定义2.1 用二维表格表示实体集,用关键码表示实体之间联系的数据模型称为关系模型(Relational Model)理解用二维表格(table)表示实体集及其间联系,用关键码(或键)进行数据导航关系模型是逻辑模型的一种,也具有三个要素关系数据结构关系操作数据完整性约束规则,6,2.1 关系模型的基本概念,基本术语示例,7,2.1 关系模型的基本概念,基本术语关系数据结构:二维表字段称为属性,也称为列(column)反映事物的一个特征,每个字段都有字段名和字段值属性的取值范围(所有可取值的集合)称为属性域Domain
3、 大写字母A、B、C、表示单个属性;大写字母、X、Y、Z 表示属性集小写字母a、b、c、表示属性值记录称为元组(tuple),也称为行(row)记录类型称为关系模式,由模式名和属性列表组成元组集合称为关系(relation)或实例(instance),也称为表格,8,2.1 关系模型的基本概念,基本术语关系数据结构:二维表元组用关键字(Key word简称键)来标识属性个数称为元数(arity),也称为目;元组个数为基数(cardinality),9,2.1 关系模型的基本概念,基本术语关键码(key,简称键)由一个或多个属性组成。在实际使用中,有下列几种键1)超键(Super Key)其值能
4、唯一地决定其它所有属性的值的属性集2)候选键(Candidate Key)不含多余属性的超键其值能唯一地决定关系中其它所有属性的值、而它的任何真子集无此性质的属性或属性组 3)主键(Primary Key)用户选作元组标识的候选键,称为主键(PK),简称键,10,2.1 关系模型的基本概念,基本术语关键码(key,简称键)4)候补键(Alternate Key)主键之外的候选键5)全键:由关系的所有属性构成的主键 6)外键(Foreign Key,FK)如果模式R中的属性K是其它模式的主键,那么K在模式R中称为外键不是本关系的键,却引用了其它关系或本关系的键的属性或属性组7)主属性与非主属性,
5、11,2.1 关系模型的基本概念,基本术语示例关系模式STUDENT(学号,姓名,性别,出生日期,籍贯)假设:不允许学生重名,问:(学号,姓名,性别,出生日期,籍贯)?(学号,性别)?(学号,姓名)?(学号)?(姓名)?哪些是主属性?,12,2.1 关系模型的基本概念,关系的定义和性质定义2.2 关系是一个属性数目相同的元组的集合有限关系在关系模型中,关系的规范性限制:1)关系中每一个属性值都是不可分解的(原子的)2)关系中不允许出现重复元组(即不允许出现相同的元组)3)由于关系是一个集合,因此不考虑元组间的顺序,即没有行序注:关系中元组的排列是有序的,取决于索引4)元组中的属性在理论上也是无
6、序的,但使用时按习惯考虑列的顺序,13,2.1 关系模型的基本概念,关系模型的完整性规则实体完整性规则(entity integrity rule)关系内的约束每个关系都应有一个主键每个元组的主键的值应当唯一;组成主键的属性,不能有空值(NULL)否则,主键值就起不了惟一标识元组的作用,14,2.1 关系模型的基本概念,关系模型的完整性规则实体完整性规则(entity integrity rule)例如,15,2.1 关系模型的基本概念,关系模型的完整性规则参照完整性规则(referenceintegrityrule)不同关系或同一关系的不同元组间的约束定义2.3 参照完整性规则的形式定义如果
7、属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么在R2的关系中,K的取值只允许两种可能,或者为空值,或者等于R1关系中某个主键值规则的实质:不允许引用不存在的实体在上述形式定义中关系模式R1的关系称为“参照关系”,也称“主表”、“父表”关系模式R2的关系称为“依赖关系”,也称“副表”、“子表”,16,2.1 关系模型的基本概念,关系模型的完整性规则参照完整性规则(reference integrity rule)规则在具体使用时,有三点变通:外键和相应主键可以不同名,只要定义在相同值域上即可R1和R2可以是不同关系模式,也可以是同一个关系模式同一个关系模式中,表示了同一个关系中不同
8、元组之间的联系外键值是否允许空,应视具体问题而定当外键属性是主键的组成成分时,不允许为空,17,2.1 关系模型的基本概念,关系模型的完整性规则参照完整性规则(reference integrity rule)示例,18,2.1 关系模型的基本概念,关系模型的完整性规则用户定义的完整性规则和数据的具体内容有关的约束构建关系模式时,属性的数据类型,可能满足不了需求,需要显式定义额外的约束规则说明CHECK()子句、触发器、断言、过程说明各种DBMS产品对完整性约束的支持程度不同 数据库中完整性约束检查,由DBMS实现对DB进行更新(I/D/U)操作时检查,保证数据与现实世界的一致性,19,2.1
9、 关系模型的基本概念,关系模型的完整性规则用户定义的完整性规则示例1,20,2.1 关系模型的基本概念,关系模型的完整性规则用户定义的完整性规则示例2,21,2.1 关系模型的基本概念,关系模型的三层体系结构回顾数据库的三级体系结构,22,2.1 关系模型的基本概念,关系模型的三层体系结构关系模型也遵循数据库的三级体系结构关系模式记录类型称为关系模式关系模式的集合就是数据库的概念模式,是问题域数据的全局逻辑视图是对数据的特征描述,不涉及物理存储方面的描述由数据定义语言(DDL)实现定义模式名、属性名、值域、模式主键定义时,模式名和属性名一般都用英文单词表示,23,2.1 关系模型的基本概念,关
10、系模型的三层体系结构关系模型也遵循数据库的三级体系结构关系模式,24,2.1 关系模型的基本概念,关系模型的三层体系结构关系模型也遵循数据库的三级体系结构子模式是用户所用到的局部数据的描述构建子模式时,需要指出数据与关系模式中相应数据的联系由数据定义语言(DDL)实现定义时需要考虑用户对数据的操作权限对子模式的操作(如插入、修改、删除)是受限的,25,2.1 关系模型的基本概念,关系模型的三层体系结构关系模型也遵循数据库的三级体系结构子模式例如构建成绩子模式,要求显示学号、姓名、课程号和成绩,G(S#,SNAME,C#,SCORE),26,2.1 关系模型的基本概念,关系模型的三层体系结构关系
11、模型也遵循数据库的三级体系结构子模式,27,2.1 关系模型的基本概念,关系模型的三层体系结构关系模型也遵循数据库的三级体系结构存储模式在有些DBMS中,关系存储是作为文件看待的每个元组就是一个记录由于关系模式有键,因此存储一个关系可用散列方法或索引方法实现如果关系的元组数目较少(100个以内),那么也可以用“堆文件”方式实现(即没有特定的次序)可对任意的属性集建立辅助索引,28,2.1 关系模型的基本概念,关系模型的形式定义和优点关系模型的三个要素1)关系数据结构关系,二维表数据库中全部数据及其相互联系都被组织成“关系”2)关系操作一组完备的关系运算,支持对数据库的各种操作关系运算分成关系代
12、数、关系演算和关系逻辑等三类3)数据完整性约束规则实体完整性、参照完整性和用户自定义的完整性,29,2.1 关系模型的基本概念,关系模型的形式定义和优点关系模型的优点1)单一的数据结构形式,具有高度的简明性和精确性2)逻辑结构和相应的操作,完全独立于数据存储方式具有高度的数据独立性3)坚实的数学基础关系运算的完备性和规范化设计理论4)数据库技术的基础关系数据库语言与一阶谓词逻辑的固有内在联系,为以关系数据库为基础的推理系统和知识库系统研究提供了方便,30,2.1 关系模型的基本概念,关系查询语言和关系运算数据库语言SQL分为:DDL,DML、QL和DCL数据操纵语言DML,描述插入、删除、修改
13、等操作查询语言QL,描述用户的各种检索要求理论基础是“关系运算理论”,分为三类:1)关系代数语言2)关系演算语言3)关系逻辑语言,31,2.2 关系代数,五个基本操作并(Union)前提相同的关系模式(并兼容:两关系具有相同的目,对应属性域相同且两个关系的属性排列次序一样)定义R和S的并,是由属于R或属于S的元组构成的集合记为RS形式定义RS t|tR tS,t是元组变量,32,2.2 关系代数,五个基本操作差(Difference)前提相同的关系模式(并兼容:两关系具有相同的目,对应属性域相同且两个关系的属性排列次序一样)定义R和S的差,是由属于R但不属于S的元组构成的集合记为RS形式定义R
14、S t|tR tS,t是元组变量,33,2.2 关系代数,五个基本操作笛卡尔积(Cartesian Product)形式定义假设:R的元数r,基数为m;S的元数s,基数为nRSt|t trR tsSRS的元数为r+s,基数mn参与运算的R和S关系,不要求有同名属性若有同名属性,在属性名前加“关系名.”来标注,34,2.2 关系代数,五个基本操作投影(Projection)对关系进行垂直分割(感兴趣的列),属性可任意排列表示()形式定义i1,im(R)t|t R 性质((R))(R)属性表1属性表2,35,2.2 关系代数,五个基本操作选择(Selection)据条件对关系做水平分割,选取符合条
15、件的元组表示()F(R),F是命题公式 形式定义F(R)t|tR F(t)=true 性质a)(R)(R)b)(R)(R),36,2.2 关系代数,五个基本操作示例,37,2.2 关系代数,四个组合操作交(intersection)前提相同的关系模式(并兼容:两关系具有相同的目,对应属性域相同且两个关系的属性排列次序一样)定义R和S的交,是由属于R又属于S的元组构成的集合记为RS形式定义RS ttR tS 推导RS=R-(R-S),或 RS=S-(S-R),38,2.2 关系代数,四个组合操作交(intersection)示例,39,2.2 关系代数,四个组合操作连接(join)形式定义R S
16、 tt=trRtsStritsj 推导R S i(r+j)(R S),其中r是关系R的元数表示连接是在(R S)中,挑选第i个分量和第(r+j)个分量满足操作的元组说明:两个关系的同域属性比较连接:,等值连接:F连接:F F1 Fn,Fk i j(、),40,2.2 关系代数,四个组合操作连接(join)示例1)连接:R S,或 R S2)等值连接:R S,或 R S3)F连接:R S,或 R S,41,2.2 关系代数,四个组合操作自然连接(natural join)两个关系公共属性上的等值连接推导R S=i1,im(R.A1=S.A1 R.Ak=S.Ak(RS)A1,Ak是关系R和S的公共
17、属性列表i1,im是两个关系属性的并集计算过程 1)计算RS2)选择:在RS中,挑选满足公共属性相等的元组3)投影:在RS中,去掉冗余属性S.A1,S.Ak,42,2.2 关系代数,四个组合操作自然连接(natural join)示例R S A,R.B,R.C,D(R.B=S.B R.C=S.C(RS),43,2.2 关系代数,四个组合操作除法(division)前提R中的属性包含S中的属性 R(X,Y),S(Y)作用RS是满足下列条件的最大关系,属性由R中那些不出现在S的属性组成,(RS)S的每个元组都在关系R中计算过程:RS=X(R)X(X(R)S)R)1)T=X(R);X为不包含在S中的
18、属性2)W=(TS)R;计算TS中不在R的元组3)V=X(W)4)RS=TV,44,2.2 关系代数,四个组合操作除法(division)示例,45,2.2 关系代数,关系代数运算的应用实例关系代数表达式五个基本操作的有限次复合的式子表达式的运算结果仍是一个关系用关系代数表达式表示各种数据查询操作,46,2.2 关系代数,关系代数运算的应用实例关系代数表达式示例,47,2.2 关系代数,关系代数运算的应用实例1)检索学习课程号为C2课程的学生学号与成绩 SNO,Grade(CNO=C2(SC)1,3(2=C2(SC)CNO=C2(SNO,Grade(SC)2=C2(1,3(SC),48,2.2
19、 关系代数,关系代数运算的应用实例1)检索学习课程号为C2课程的学生学号与成绩 SNO,Grade(CNO=C2(SC)CNO=C2(SNO,Grade(SC),49,2.2 关系代数,关系代数运算的应用实例2)检索学习课程号为C2的学生学号与姓名SNO,SNAME(CNO=C2(S SC)查询涉及到两个关系S与SC,先要对这两个关系进行自然连接操作,然后再执行选择和投影操作,50,2.2 关系代数,关系代数运算的应用实例2)检索学习课程号为C2的学生学号与姓名SNO,SNAME(CNO=C2(S SC),51,2.2 关系代数,关系代数运算的应用实例2)检索学习课程号为C2的学生学号与姓名S
20、NO,SNAME(CNO=C2(S SC),52,2.2 关系代数,关系代数运算的应用实例3)检索至少选修LIU老师所授课程一门课程的学生学号与姓名 SNO,SNAME(TNAME=LIU(S SC C T),53,2.2 关系代数,关系代数运算的应用实例4)检索选修课程号为C2或C4的学生学号SNO(CNO=C2 CNO=C4(SC),54,2.2 关系代数,关系代数运算的应用实例5)检索至少选修课程号为C2和C4的学生学号SNO(CNO=C2 CNO=C4(SC),55,2.2 关系代数,关系代数运算的应用实例5)检索至少选修课程号为C2和C4的学生学号1(1=4 2=C2 5=C4(SC
21、SC),56,2.2 关系代数,关系代数运算的应用实例6)检索不学C2课的学生姓名与年龄SNAME,AGE(CNO C2(S SC),57,2.2 关系代数,关系代数运算的应用实例6)检索不学C2课的学生姓名与年龄SNAME,AGE(CNO C2(S SC),58,2.2 关系代数,关系代数运算的应用实例6)检索不学C2课的学生姓名与年龄SNAME,AGE(S)SNAME,AGE(CNO=C2(S SC)差操作先求出全体学生的姓名和年龄再求出学了C2课的学生的姓名和年龄最后执行差操作,-,59,2.2 关系代数,关系代数运算的应用实例7)检索学习全部课程的学生姓名投影出所有学生的选课情况SNO
22、,CNO(SC)投影出全部课程的课程号CNO(C)用除法计算学了全部课程的学生学号集合(临时关系)SNO,CNO(SC)CNO(C)用得到的关系与S自然联接,最后投影出SNAMESNAME(S(SNO,CNO(SC)CNO(C),60,2.2 关系代数,关系代数运算的应用实例7)检索学习全部课程的学生姓名SNAME(S(SNO,CNO(SC)CNO(C),61,2.2 关系代数,关系代数运算的应用实例8)检索所学课程包含学生S3所学课程的学生学号投影出所有学生的选课情况SNO,CNO(SC)投影出学生S3所学的全部课程的课程号CNO(SNO=S3(SC)用除法计算所学课程包含学生S3所学课程的
23、学生学号SNO,CNO(SC)CNO(SNO=S3(SC)注若想得到其他信息,可用式与S自然连接,投影即可(S(),?,62,2.2 关系代数,关系代数运算的应用实例8)检索所学课程包含学生S3所学课程的学生学号SNO,CNO(SC)CNO(SNO=S3(SC),?,63,2.2 关系代数,关系代数运算的应用实例总结查询语句的关系代数表达式的一般形式是:(RS)或者(R S)先选择,后投影查询涉及到“否定”问题,用减法(差)来解决查询涉及到“全部”问题,用除法来解决,64,2.2 关系代数,七个扩充操作略,65,2.3 关系演算,略,66,2.4 关系代数表达式的优化,略,67,2.5 关系逻辑,略,