部分关系数据库.ppt

上传人:小飞机 文档编号:6352288 上传时间:2023-10-19 格式:PPT 页数:48 大小:268.99KB
返回 下载 相关 举报
部分关系数据库.ppt_第1页
第1页 / 共48页
部分关系数据库.ppt_第2页
第2页 / 共48页
部分关系数据库.ppt_第3页
第3页 / 共48页
部分关系数据库.ppt_第4页
第4页 / 共48页
部分关系数据库.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

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

1、第2章 关系数据库,2.1 关系数据模型 2.2 关系的完整性 2.3 关系代数 2.4 关系演算,2.1 关系数据模型,2.1.1 关系数据模型概述 关系数据库系统是支持关系模型的数据库系统。关系数据模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。,关系数据结构 关系模型的数据结构非常简单。在关系数据模型中,现实世界的实体以及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构是一张二维表。关系操作 关系模型中常用的关系操作包括:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差

2、(Difference)等运算,以及相关的查询(Query)、增加(Insert)、删除(Delete)、修改(Update)等数据操作两大部分。查询的表达能力是其中最主要的部分。,关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合(set-at-a-time)的方式。早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。关系代数是用对关系的运算来表达查询要求的方式。关系演算是用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。关系代数、元组关系演算和域关系演算三种语言在表达能

3、力上是完全等价的。,关系的三类完整性约束 关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。,2.1.2 基本术语,用二维表格表示实体集,用主码进行数据导航的数据模型称为关系模型(Relational Model)。,关系(Relation):通俗地讲关系就是二维表,二维表名就是关系名。属性(Attribute):二维表中的列称为属性(字段);每个属性有一个名称,称为属性名;二维表中对应某一列的值称为属性值;二维

4、表中列的个数称为关系的元数;一个二维表如果有n列,则称为n元关系。值域(Domain):二维表中属性的取值范围称为值域。元组(Tuple):二维表中的行称为元组(记录值)。,分量(Component):元组中的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量。关系模式(Relation Schema):二维表的结构称为关系模式,或者说关系模式就是二维表的表框架或结构,它相当于文件结构或记录结构。设关系名为REL,其属性为A1,A2,An,则关系模式可以表示为 REL(A1,A2,An)对每个Ai(i=1,n)还包括该属性到值域的映象,即属性的取值范围。,关系模型(Relation

5、Model):关系模型是所有的关系模式、属性名和主码的汇集,是模式描述的对象。关系数据库(Relation Database):对应于一个关系模型的所有关系的集合称为关系数据库。关系模型是“型”,而关系数据库是“值”。数据模型是相对稳定的,而数据库则在随时间不断变化(因为数据库中的记录在不断被更新)。人们还把数据库的型(数据模型)称为数据库的内涵(Intention),而把数据库的值(一个数据模型下的具体的数据库)称为数据库的外延(Extensive)。,超码(Super Key):在关系中能够唯一标识元组的属性集称为关系模式的超码。候选码(Cadidate Key):如果一个属性集的值能惟一

6、标识一个关系的元组而又不含有多余的属性,则称该属性集为候选码。在一个关系上可以有多个候选码。主码(Primary Key):有时一个关系中有多个候选码,这时可以选择其中一个作为主码。每一个关系都有一个并且只有一个主码。,主属性(Primary attribute):包含在任一候选码中的属性称为主属性。非主属性(Nonprimary attribute):不包含在任一候选码中的属性称为非主属性。外码(Foreign Key):如果关系模式R中属性K是其他关系模式的主码,那么K在关系模式R中称为外码。关系中每一个属性都有一个取值范围,称为属性的值域(Domain)。属性A的取值范围用DOM(A)表

7、示。每一个属性对应一个值域,不同的属性可对应于同一值域。,关系的定义和性质,定义2.1关系是一个属性数目相同的元组的集合。把关系看成一个集合,集合中的元素是元组,每个元组的属性数目应该相同。如果一个关系的元组数目是无限的,则称为无限关系,否则称为有限关系。关系是一种规范化了的二维表格。在关系模型中,对关系作了下列规范的限制:(1)关系中的每一个属性值都是不可分解的;(2)关系中不允许出现重复元组(即不允许出现相同的元组);(3)由于关系是一个集合,因此不考虑元组间的顺序,即没有行序;,2.2 关系的完整性,实体完整性规则(Entity Integrity Rule)参照完整性规则(Refere

8、nce Integrity Rule)用户定义的完整性规则 完整性约束的作用,实体完整性规则(Entity Integrity Rule)这条规则要求关系中元组在组成主码的属性上不能有空值。如果出现空值,那么主码值就起不了唯一标识元组的作用。,参照完整性规则(Reference Integrity Rule),定义2.2参照完整性规则的形式定义如下:如果属性集K是关系模式R1的主码,K也是另一个关系模式R2的外码,那么在R2的关系中,K的取值只允许两种可能:空值,或者等于R1关系中某个主码值。,这条规则的实质是不允许引用不存在的实体。在具体使用时,有三点变通:外码和相应的主码可以不同名,只要定

9、义在相同值域上即可;R1和R2也可以是同一个关系模式,此时表示了同一个关系中不同元素之间的联系;外码值是否允许空,应视具体问题而定。在上述形式定义中,关系模式R 1的关系称为“参照关系”,关系模式R2的关系称为“依赖关系”。,例:在关系数据库中有下列两个关系模式:S(S,SNAME,AGE,SEX)SC(S#,C#,GRADE)这里学生关系模式S的属性为学生学号、姓名、年龄、性别,选课关系模式SC的属性为学生学号、选修课程的课程号和成绩。带下划线者为主码,带波浪线者为外码。据规则要求关系SC中的S#值应该在关系S中出现。如果关系SC中引用了一个不存在的学生实体,这就违反了参照完整性规则。另外,

10、在关系SC中S#不仅是外码,也是主码的一部分,因此这里S#值不允许空。,用户定义的完整性规则,在建立关系模式时,对属性定义了数据类型,即使这样可能还满足不了用户的需求。此时,用户可以针对具体的数据约束,设置完整性规则,由系统来检验实施,以使用统一的方法处理它们,不再由应用程序承担这项工作。例如学生的年龄定义为两位整数,范围还太大,我们可以写如下规则把年龄限制在1530岁之间:CHECK(AGE BETWEEN 15 AND 30),完整性约束的作用,数据完整性的作用就是要保证数据库中的数据是正确的。通过在数据模型中定义实体完整性规则、参照完整性规则和用户定义完整性规则,数据库管理系统将检查和维

11、护数据库中数据的完整性。执行插入操作时检查完整性 执行删除操作时检查完整性 执行更新操作时检查完整性,执行插入操作时检查完整性,执行插入操作时需要分别检查实体完整性规则、参照完整性规则和用户定义完整性规则。首先检查实体完整性规则 接着再检查参照完整性规则 最后检查用户定义完整性规则 综上所述,在插入一个元组时只有满足了所有的数据完整性规则,插入操作才能成功,否则插入操作不成功。,执行删除操作时检查完整性,执行删除操作时一般只需要检查参照完整性规则。如果删除的是参照关系的元组,则不需要进行参照完整性检查,可以执行删除操作。如果删除的是被参照关系的元组,则检查被删除元组的主码属性的值是否被参照关系

12、中某个元组的外码引用,如果未被引用则可以执行删除操作;否则可能有三种情况:不可以执行删除操作,即拒绝删除 可以删除,但需同时将参照关系中引用了该元组的对应元组一起删除,即执行级联删除 可以删除,但需同时将参照关系中引用了该元组的对应元组的外码置为空值,即空值删除,执行更新操作时检查完整性,执行更新操作可以看作是先删除旧的元组,然后再插入新的元组。所以执行更新操作时的完整性检查综合了上述两种情况。,2.3 关系代数,关系代数的五个基本操作 关系代数是以关系为运算对象的一组高级运算的集合。关系定义为属性个数相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关系代数中的操作可以分为两类:传

13、统的集合操作:并、差、交、笛卡儿积 扩充的关系操作:投影(对关系进行垂直分割)、选择(水平分割)、连接(关系的结合)、除法(笛卡儿积的逆运算)等,并(Union),设关系R和S即有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为RS。实行定义如下:RSttRtS,t是元组变量,R和S的元数相同。,差(Difference),关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S是元组构成的集合,记为R-S。形式定义如下:R-S=t|tRtS,R和S的元组相同。,笛卡儿积(Cartesian Product),设关系R和S的元数分别为r和s,定义R和S的笛卡儿积是一个(r

14、+s)元的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个元组,记为RS。形式化定义如下:RS=t|ttrRtsS 此处tr、ts中r,s为上标。若R有m个元组,S有n个元组,则RS有mn个元组。,投影(Projection),设关系R 是k元关系,R在其分量Ai1,Aim(mk,i1,im为1到k间的整数)上的投影用i1,im(R)表示,它是一个m元元组集合,形式定义如下:i1,im(R)=t|tR 这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。,例如:3,1(R)表示关系R中第一列,第三列,组成新的关系,新关系中第一列为R的第三列,新关系

15、的第二列为R的第一列。如果R的每列标上属性名,那么操作符的下标处也可以用属性名表示。例如关系R(A,B,C),那么C,A(R)与3,1(R)是等价的。,选择(Selection),选择操作是根据某些条件对关系做水平切割,即选取符合条件的元组。条件可用命题公式(即计算机语言中的条件表达式)F表示。F中有两种成分:运算对象:常数(用引号括起来),元组分量(属性名或列的序号)。运算符:算术比较运算符(,也称为符),逻辑运算符(,)。关系R关于公式F的选择操作用F(R)表示,形式定义如下:F(R)=t|tRF(t)=true 为选择运算符,F(R)表示从R中挑选满足公式F为真的元组所构成的关系。,A

16、B Ca b cd a fc b d,(a)关系R,A B Cb g ad a f,(b)关系S,A B C,RS,A B Ca b cc b d,R-S,A B Ca b c c b d,B=b(R),C A,C,A(R),R.A R.B R.C S.A S.B S.C,RS,关系代数的四个组合操作,交(Intersection)关系R和S的交是由属于R又属于S的元组构成的集合,记为RS,这里要求R和S定义在相同的关系模式上。形式定义如下:RS=t|tRtS,R和S的元数相同。,连接(Jion),连接有两种:连接和F连接(这里是算术比较符,F是公式)。连接 连接是从关系R和S的笛卡儿积中选取

17、属性值满足某操作的元组记为R i j S,这里i和j分别是关系R和S中的第i个、第j个属性的序号。形式定义如下:R i j St|ttrRtsSt ritsj,连接是由笛卡儿积和选择操作组合而成。设关系R的元数为r,那么连接操作的定义等价于下式:R i j S=i(r+j)(RS)该式表示是在关系R和S的笛卡儿积中挑选第i个分量和第(r+j)个分量满足操作的元组。如果是等号“=”,该连接操作称为等值连接。,F连接,F连接是从关系R和S的笛卡儿积中选取属性值满足某一公式F的元组,记为R F S。这里F是形为F1 F2Fn的公式,每个Fp是行为ij的式子,而i和j分别为关系R和S的第i个和第j个分

18、量的序号。,A B C,关系R,关系S,A B C D E,R 21 S,A B C D E,R2112 S,自然连接(Natural Join),两个关系R和S的自然连接操作用R S表示,具体计算过程如下:计算RS;设R和S的公共属性是A1,A2,A k,挑选R和S中满足R.A1=S.A1,R.A k=S.Ak的那些元组;去掉S.A1,S.A k这些列。因此R S的形式化可用以下定义:R S=i1,im(R.A1=S.A1R.Ak=S.Ak(RS),其中i1,im为R和S的全部属性,但公共属性只出现一次。,A B C,关系R,B C D,关系S,A B C D,R S,除法(Division

19、),设关系R和S的元数分别为r和s(设rs0),那么RS是一个(rs)元的元组的集合。RS是满足下列条件的最大关系:其中每个元组t与S中的每个元组u组成的新元组必在关系R中。为方便起见,我们假设S的属性为R中后s个属性。RS的具体计算过程如下:T=1,2,rs(R)W=(TS)R(计算TS中不在R的元组)V=1,rs(W)RS=TV 即RS=1,2,rs(R)1,2,,rs(1,2,rs(R)S)R),C2 OS,C2 OS C4 MIS,C1 DB C2 OS C4 MIS,SNO SNAME CNO CNAME,SNO SNAME,SNO SNAME,SNO SNAME,S1 BAO,S1

20、 BAOS2 GUS3 ANS4 LI,S1,S2,S3,R,RS1,RS2,RS3,除法操作的例子,关系代数运算的应用实例,例:设教学数据库中有三个关系:学生关系 S(S#,SNAME,AGE,SEX)选课关系 SC(S#,C#,GRADE)课程关系 C(C#,CNAME,TEACHER)(1)检索学习课程号为C2的学生学号与成绩。S#,GRADE(C#=C2(SC),(2)检索学习课程号为C2的学生学号与姓名。S#,SNAME(C#=C2(S SC)(3)选修课程名为MATHS的学生学号与姓名。S#,SNAME(CNAME=MATHS(S SC C)(4)检索选修课程号为C2或C4的学生学

21、号。S#(C#=C2C#=C4(SC)(5)检索至少选修课程号为C2和C4的学生学号。S#(1=42=C25=C4(SCSC)(6)检索不学C2课的学生姓名与年龄。SNAME,AGE(S)SNAME,AGE(C#=C2(S SC),(7)检索学习全部课程的学生姓名。编写这个查询语句的关系代数表达式过程如下:学生选课情况可用操作S#,C#(SC)表示;全部课程可用操作C#(C)表示;学了全部课程的学生学号可用除法操作表示,操作结果是学号S#集:S#,C#(SC)C#(C)从S#求学生姓名SNAME,可以用自然连接和投影操作组合而成:SNAME(S S#,C#(SC)C#(C),(8)检索所学课程

22、包含学生S3所学课程的学生学号。学生选课情况可用操作S#,C#(SC)表示;学生S3所学课程可用操作C#(S#=S3(SC)表示;所学课程包含学生S3所学课程的学生学号,可用除法操作求得:S#,C#(SC)C#(S#=s3(SC),2.4关系运算的安全约束和等价性,关系运算的安全性 定义2.6在数据库技术中,不产生无限关系和无穷验证的运算称为安全运算,相应的表达式称为安全表达式,所采取的措施称为安全约束。在关系演算中,必须有安全约束的措施,关系演算表达式才是安全的。对于元组表达式()将公式P(t)的“域”(Domain)定义为出现在公式P(t)中的常量和关系的所有属性值组成的集合,记为DOM(

23、P)也是有限的。例如P(t)是(),是二元关系,那么DOM(P)1()2()。,安全的原则表达式()应满足下列三个条件:表达式的元组中出现的所有值均来自DOM(P)。对于P(t)中每个形如()(P1()的子公式,如果元组使P1(u)为真,那么的每个变量必是DOM(P1)的元素。换言之,如果有某个分量不属于DOM(P1),那么P1(u)未假。对于P(t)中每个形如()(P1()子公式,如果元组使P1(u)为假,那么的每个分量必是DOM(P1)的元素,换言之,如果有某个分量不属于DOM(P1),那么P1(u)必为真。上面、两点能够保证:只要考虑DOM(P1)中元素组成的元组时,就能决定公式()(P

24、1()和()(P1()的真值。,2关系运算的等价性,并、差、笛卡儿积、投影和选择是关系代数最基本的操作,并构成了关系代数运算的最小完备集。已经证明,在这个基础上,关系代数、安全的元组关系演算、安全的域关系演算在关系的表达和操作能力上是完全等价的。,关系运算主要有关系代数、元组演算和域演算三种,相应的关系查询语言也已研制出来,他们典型的代表是ISBL语言、QUEL语言和QBE语言。ISBL(Information System Base Language)是IBM公司英格兰底特律科学中心在1976年研制出来的,用在一个实验系统PRTV(Peter Relational Test Vehicle)

25、上。QUEL语言(Query Language)是美国柏克利加州大学研制的关系数据库系统INGERS的查询语言,1975年投入运行,并由美国关系技术公司制成商品推向市场。QUEL语言是一种基于元组关系演算的并具有完善的数据定义、检索、更新等功能的数据语言。,QBE(Query By Example,按例查询)是一种特殊的屏幕编辑语言。QBE是提出的,在约克镇IBM高级研究实验室为图形显式终端用户设计的一种域演算语言,1978年在IBM370上实现。QBE使用起来很方便,属于人机交互语言,用户可以是缺乏计算机知识和数学基础的非程序员用户。现在QBE的思想已渗入到许多DBMS系统中。还有一个语言SQL,这是介乎于关系代数和元组演算之间的一种关系查询语言,现已成为关系数据库的标准语言,我们将在后面详细介绍。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号