第2章关系数据库.ppt

上传人:本田雅阁 文档编号:3423567 上传时间:2019-08-24 格式:PPT 页数:66 大小:1.95MB
返回 下载 相关 举报
第2章关系数据库.ppt_第1页
第1页 / 共66页
第2章关系数据库.ppt_第2页
第2页 / 共66页
第2章关系数据库.ppt_第3页
第3页 / 共66页
第2章关系数据库.ppt_第4页
第4页 / 共66页
第2章关系数据库.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《第2章关系数据库.ppt》由会员分享,可在线阅读,更多相关《第2章关系数据库.ppt(66页珍藏版)》请在三一文库上搜索。

1、数据库原理与应用,第2章 关系数据库,关系模型是一种组织层数据模型,面向计算机应用。关系数据库是基于关系数据模型的数据库。当前,主流的数据库管理系统都是关系型的DBMS。,2.1 关系数据模型概述,关系模型的组成 关系数据结构 数据完整性约束 关系操作,2.1 关系数据结构,关系数据模型源于数学,用二维表来组织数据,这张二维表在关系数据库中就称为关系。 关系数据库就是表或者关系的集合。 关系型DBMS就是让用户感觉到所操作的数据库像是一张张的表的集合。 在关系数据库中,表是提供给用户操作的逻辑结构,而数据实际的物理存储结构和存储路径对用户是不可见的。,关系数据模型的基本术语,关系:关系就是二维

2、表,并满足如下性质: 关系表中的每列都是不可再分的数据项; 表中的行、列次序并不重要;,关系数据模型的基本术语,属性:表中的每一列是一个属性值集,反映了实体的某个性质。列名,即为属性名,不能重复。 值域:属性的取值范围。如,0分数100,学分只能取1,2,2,4,5,6等。 元组:表中的每一行称作是一个元组,它相当于一个记录值,任意两个元组不能相同。 分量:元组中的每个属性值称为元组的一个分量,n元关系的每个元组有n个分量。 关系模式:R(U,D,Dom,F) R关系名; U属性名集合; D属性的值域; Dom属性的类型、长度; F属性间函数依赖集; 关系模式简记为:R(A1,A2,An),码

3、,关系数据库:对应于一个关系模型的所有关系表的集合称为关系数据库。 候选码:能够惟一标识关系中的每个元组的一个属性或最小属性组。 一个关系至少有一个候选码,可能不止一个。 最简单的情况,候选码只包含一个属性。 最极端的情况,关系模式的所有属性是这个关系模式的候选码,称为全码。,码,主码:被数据库设计者选中,用来在同一实体集中区分不同实体的候选码。(关键字) 主码的作用:分辨记录、建立索引、快速查找、排序、保持参照完整性等。 主属性:包含在任一候选码中的属性称为是主属性。 非主属性:不包含在任一候选码中的属性称为非主属性。 外码:当前关系模式的属性中所包含的另外一个关系模式的主码。(外部关键字)

4、,关系数据结构及其形式化定义,关系模式是建立在数据集合的基础上,下面从集合论的角度给出关系数据结构的形式化定义。 1关系的形式化定义 为了给出形式化定义,首先给出笛卡尔积的定义。设D1,D2,Dn为任意集合,定义笛卡尔积 D1,D2,Dn为:D1D2 Dn (d1,d2,dn) | diDi,i1,2,n 其中每一个元素(d1,d2,dn)称为一个n元组,简称元组。元组中每一个di称为是一个分量。,笛卡儿乘积示例,设: D1计算机专业,信息科学专业 D2张珊,李海,王宏 D2男,女 则D1D2D2的笛卡尔积为: D1D2D2 (计算机软件专业,张珊,男),(计算机软件专业,张珊,女), (计算

5、机软件专业,李海,男),(计算机软件专业,李海,女), (计算机软件专业,王宏,男),(计算机软件专业,王宏,女), (信息科学专业,张珊,男),(信息科学专业,张珊,女), (信息科学专业,李海,男),(信息科学专业,李海,女), (信息科学专业,王宏,男),(信息科学专业,王宏,女),笛卡尔积实际上就是一个二维表,笛卡尔积,笛卡尔积D1D2 Dn的任意一个子集称为D1,D2,Dn上的一个n元关系。 形式化的关系定义同样是把关系看成二维表,给表的每个列取一个名字,称为属性。 n元关系有n个属性,一个关系中的每个属性的名字必须是唯一的。 属性Di的取值范围(i1,2,n)称为该属性的值域(do

6、main)。 从集合论的观点也可以将关系定义为:关系是一个有K个属性的元组的集合。,2对关系的限定,三类关系: 基本表实际存储数据的逻辑表示,实际存在的表。 查询表查询结果对应的表,只作显示用。 视 图由基本表或其他视图导出表,是虚表,不对 应实际存储的数据。 关系中的每个分量都必须是不可再分的数据项。 关系表中行、列的顺序不重要 。 表中列的数据类型是固定的,即每个列中的分量是同类型的数据,来自相同的值域。 不同的列的数据可以取自相同的值域,每个列称为一个属性,每个属性有不同的属性名。,2.2 关系模型的完整性约束,关系模型的完整性是对关系的某种约束条件,保证数据库中存储的数据有效和正确。

7、主要包括三类完整性约束: 实体完整性 参照完整性 用户定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。,实体完整性,实体完整性是保证关系中的每个元组都是可识别的和惟一的。 表中不允许存在如下的记录: 无主码值的记录 主码值相同的记录 例:选修(学号,课程号,成绩) “学号、课程号”为主码,则两个属性都不能取空值。,参照完整性,参照完整性是指对两个关系,其中一个关系中某些属性的取值受另一关系中某些属性取值范围的约束。 一般通过外码来实现。 外码:设F是基本关系R的一个或一组属性,F不是关系R的码。如果F与基本关系S的主码K

8、s相对应,则称F是基本关系R的外码。基本关系R称为参照关系(子表),基本关系S称为被参照关系(主表)。 主码值先在主表中生成,后在子表中被引用。,外码引用示例1,学生,专业,属于,(学号, 姓名, 专业号, ),(专业号,专业名),学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名),外码引用示例2,学生,课程,修课,(学号,姓名,),(课程号,课程名,),(学号, 课程号, 成绩, ),学生,学生选课,课程,外码引用示例2,学生实体及其内部的领导联系(一对多) 学生(学号,姓名,性别,专业,年龄,班长),参照完整性规则,参照完整性规则就是定义参照关系的外码与被参照关系主码之间的引用

9、规则。 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(关系R和S不一定是不同的关系),则对于关系R的每个元组在外码F上的值必须为: 或者值为空; 或者等于其所引用的关系S中某个元组的主码值。,用户定义的完整性,根据应用语义,属性数据有: 类型与长度限制:方便计算机操作 取值范围限制:防止属性值与应用语义矛盾 例:课程(课程号,课程名,学分,成绩) “课程名”属性必须取唯一值; 非主属性“课程名”也不能取空值; “学分”属性只能取值1,2,2,4,5; 成绩取0 100,2.2 关系操作,常用的关系操作有两类 查询 专门的关系运算:选择、投影、连接、除 传统的集合运算:

10、并、交、差、笛卡尔积 数据更新 插入、删除、修改 查询的表达能力是其中最主要的部分 关系操作的特点: 操作的对象和结果都是集合(二维关系表),关系数据语言,关系代数语言 用对关系的运算来表达查询要求,ISBL 关系演算语言:用谓词来表达查询要求 元组关系演算语言 谓词变元的基本对象是元组变量ALPHA, QUEL 域关系演算语言 谓词变元的基本对象是域变量,QBE 具有关系代数和关系演算双重特点的语言,SQL 三种语言在表达能力上基本上是等价的,并且能够嵌入高级语言中使用。,2.4 关系代数,关系代数是一种抽象的查询语言,以关系作为运算对象,产生新的关系作为运算结果。 关系代数的运算可分为两大

11、类: 传统的集合运算:广义笛卡尔积运算、并、交和差运算。(把关系看成是元组的集合,运算主要是从行的角度进行) 专门的关系运算:选择、投影、连接和除运算。(不仅涉及行且涉及到列),关系代数的运算符(四类),关系代数的运算符(四类),2.4.1 传统的集合运算,传统的集合运算是二目运算 设关系R和S均是n元关系,且相应的属性值取自同一个值域,则可以定义三种运算: 并运算() 交运算() 差运算(),1并运算,关系R与关系S的并记为: RSt| tRtS 其结果仍是n目关系,由属于R或属于S的元组组成。,2交运算,关系R与关系S的交记为: RSt| tRtS 结果仍是n目关系,由属于R且属于S的元组

12、组成。,2差运算,关系R与关系S的差记为: RSt| tRt S 结果仍是n目关系,由属于R而不属于S的元组组成。,4广义笛卡尔积,两个分别为n目和m目的关系R和关系S的广义笛卡尔积是一个(mn)列的元组的集合。 若R有K1个元组,S有K2个元组,则关系R和关系S的广义笛卡尔积有K1K2个元组,记做: RStrts | trR tsS trts表示由两个元组tr和ts前后有序连接而成的一个m+n列元组,该元组的前n个分量是关系R的一个元组,后m个分量是关系S的一个元组。,广义笛卡尔积示例,2.4.2 专门的关系运算,专门的关系运算包括:投影、选择、连接和除等操作,其中前二个为一元操作,后二个为

13、二元操作。 投影 选择 连接 除,二元操作,一元操作,1选择(Selection),从关系R中选择满足给定条件的诸元组 F(R) r| rR F(t)true 其中:是选择运算符,R是关系名,r是元组,F是选择条件,它是一个逻辑表达式,取逻辑“真”值或“假”值。 选择运算是从行的角度所进行的运算,Student关系、Course关系和SC关系,Student,Course,SC,选择示例,例1 查询信息系(IS系)全体学生 Sdept = IS (Student) 结果:,例2 查询年龄小于20岁的学生 Sage 20(Student) 结果:,2投影(Projection),A(R) t.A

14、 | tR 其中: 是投影运算符,R是关系名,A是被投影的属性或属性组。 t.A(或tA)表示元组t中相应于属性(集)A的分量,投影后要消去重复行。 投影操作主要是从列的角度进行运算,投影示例,例1 查询查询学生的姓名和所在系 Sname,Sdept(Student) 结果:,例2 查询学生关系中有哪些系 Sdept(Student) 结果:,2连接,其中: A和B分别是关系R和S上可比的属性组, 是比较运算符, 连接运算从R和S的广义笛卡尔积RS中选择(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较运算符的元组。 两类常用连接:等值连接和自然连接,等值连接,当为“”时的连接为等值

15、连接, 是从关系R与关系S的广义笛卡尔积中选取A,B属性值相等的那些元组。,自然连接,特殊的等值连接,要求两个关系中进行比较的分量必须是相同的属性组。 自然连接与等值连接的差别为: 自然连接要求相等的分量必须有共同的属性名,等值连接则不要求; 自然连接要求把结果中重复的属性列去掉,等值连接却不要求。,连接示例,R,S,等值连接示例,R,S,自然连接示例,R,S,4除(Division),象集Y:给定一个关系R(X,Y),X和Y为属性组。当tXx时,x在R中的象集为: Yx = tY| tRtX=x tY表示关系R中在属性组X上值为x诸元组在属性组Y上分量的集合(或投影)。,除运算,除法的一般形

16、式 设有关系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上投影的集合,用公式表示为: RStrX| trR Y(S)Yx ,除运算示例1,R,S,象集Zx 给定一个关系R(X,Z),X和Z为属性组。 当 tX=x时,x在R中的象集(Images Set)为: Zx=tZ|t R,tX=x 它表示R中属性组X上值为x 的诸元组在Z上分量的集合,分析,在关系R中,A可以取四个值a1,a2,a2,a4 a1

17、的象集为 (b1,c2),(b2,c2),(b2,c1) a2的象集为 (b2,c7),(b2,c2) a2的象集为 (b4,c6) a4的象集为 (b6,c6) S在(B,C)上的投影为 (b1,c2),(b2,c1),(b2,c2) 只有a1的象集包含了S在(B,C)属性组上的投影, 所以: RS =a1,象集Zx,给定一个关系R(X,Z),X和Z为属性组。,当tX=x时,x在R中的象集(Images Set)为:,Zx=tZ|t R,tX=x,它表示R中属性组X上值为x的诸元组在Z上分量的集合,除运算示例2,查询修c02号课程的学生的学号和成绩。 sno, grade(cno=c02(S

18、C) 查询计算机系修c02号课程的学生的姓名和成绩。 sname, grade(cno=c02(SC) sdept=计算机系(Student) 查询修了第2学期课程的学生的姓名和所在系。 sname, sdept(semester=2(Course) SC Student) 查询修了全部课程的学生的学号和姓名。 sno, sname(Student (SC cno(Course),综合示例,2.3.3 扩充的关系运算,关系代数操作时,为了多保存一些信息,就引进了“外连接”和“半连接”。 1.外连接(outer join) 在做RS时,在公共属性上无相等值的R和S中的某些元组被舍去。 如在做RS

19、时,保留被舍去的元组,其空缺的另一关系的属性值用空值()填充,那么这种操作称为“外连接”操作。 左外连接:记为R*S保留关系R中的所有元组。 右外连接:记为R *S保留关系S中的所有元组。 全部连接:记为R*S保留关系R和S的所有元组。,扩充的关系运算,扩充的关系运算,扩充的关系运算,1.半连接(semi join) 关系R和S半连接记为R S ,定义为R S在R上的投影,即 R S =R(R S) 其中:R的下标R的属性集。,扩充的关系运算,关系演算,关系演算用数理逻辑中的谓词演算为基础,用公式表示关系上的运算。 以元组为变量的关系演算叫元组关系演算 以域为变量的关系演算叫域关系演算,元组关

20、系演算,元组关系演算(tuple relational calculus) 元组演算表达式t|P(t) 其中: P(t)是元组关系演算公式(原子公式和逻辑运算符组成),t是元组变量。 一个元组演算表达式表示一个关系。,元组关系演算,原子公式有三种形式 R(t) 表示 tR。 tiuj 表示t的第i个分量与u的第j个分量满足比较关系。 tiC 表示t的第i个分量与常量C满足比较关系。,2.4.1 元组关系演算,公式(furmula)可递归地定义 每个原子公式是一个公式。 如P1 和P2是公式,则P1 表示“P1不真”、 P1 P2 表示“P1和P2都真”、 P1 P2 表示“P1或P2或两者真”

21、、 P1 P2表示“若P1真,则P2真”。 如P1是公式,S是元组变量,那么(S)(P1 )表示命题:“存在一个元组S使得公式P1为真”。 如P1是公式,S是元组变量,那么(S)(P1 )表示命题:“对于所有元组S都使得公式P1为真”。 优先级:(), , 除以上五种外均不是公式,元组关系演算,元组关系演算公式三个等价规则: P1P2(P1P1); P1P2(P1P1); (S)(P1 (S) (S)(P1 (S): (S)(P1 (S) (S)(P1 (S): P1P2 P1P2。,元组关系演算,关系代数可转换成等价的关系演算表达式: RS=t|R(t)S(t); RS=t|R(t)S(t)

22、; RS=t|R(t)S(t): F(R)=t|R(t)F 。 F 是F的等价形式: 2,3(R)=t|(u)(R(u)t1= u2t2=u3); R(A,B,C)和 S(C,D,E),则 R R=tABCDE | tABCRtCDES,域关系演算,域关系演算(domain relational calculus)类似于元组关系演算,只是变量不再是元组变量而是域变量。 原子公式: R(X1X2 Xn)表示元组(X1X2 Xn)是R的一个元组。 xy 其中x,y是常量或域变量,但至少有一个是域变量,是比较运算符。 公式中可用运算符,也可用(X)(Y)的形式。 域关系演算表达式: t1,t2,tk|(t1,t2,tk) 其中:t1,t2,tk是域变量,是域演算公式。,小结,目前主流DBMS都是基于关系模型的,本章先从关系数据模型的三个要素:基本结构、完整性约束和数据操作重点介绍了关系模型。 关系数据语言分为:关系代数、关系演算和具有以上两种特点的语言。三种语言在表达能力上基本等价,并且能嵌入高级程序语言中使用。关系代数是一种抽象的查询语言,通过对它的学习有利于加深我们对查询表达式的理解和认识。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1