关系数据模型与关系运算_第1页
关系数据模型与关系运算_第2页
关系数据模型与关系运算_第3页
关系数据模型与关系运算_第4页
关系数据模型与关系运算_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关系数据模型与关系运算第一页,共四十三页,编辑于2023年,星期日ExampleofaRelation第二页,共四十三页,编辑于2023年,星期日2.1关系数据模型关系数据结构描述关系的笛卡尔积乘积定义Domain(域)/datatype(数据类型)CartesianProduct(笛卡尔积)定义:设有一组域D1,D2,…,Dn,这些域可以部分或者全部相同。域D1,D2,…,Dn的笛卡尔乘积(CartesianProducts)定义为如下集合:D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}

其中每一个元素(d1,d2,…,dn)称为一个元组(Tuple),通常用t表示;元组中每一个值称为一个分量(Component)。例子:总分登记表中的四个域第三页,共四十三页,编辑于2023年,星期日2.1关系数据模型arelationisasubsetofaCartesianproduct例子1:总分登记表Domain(学号)Domain(姓名)Domain(性别)Domain(总分)例子2:ifrelationthave4attributes,A1,A2,A3,andA4,则TDomain(A1)xDomain(A2)xDomain(A3)xDomain(A4)关系的二维表格描述关系是满足特定规范性要求的二维表格关系的规范化限定关系的其他一些概念:数据库、关系(表)、属性、元组、基数、度数第四页,共四十三页,编辑于2023年,星期日2.1关系数据模型键超键、候选键、主键、外键设X是关系R的一个或一组属性,但不是关系R的键。如果X与关系S的主键KS相对应,则称X是关系R的外键(Foreignkey)。关系R为参照关系(ReferencingRelation)。关系S为被参照关系(ReferencedRelation)或目标关系(TargetRelation)。关系模式和关系实例关系模式关系模式(RelationSchema)。它是一个5元组:R(U,D,dom,F)关系实例第五页,共四十三页,编辑于2023年,星期日候选键(键):{A,B};{B,C};{A,C};超键举例:{A,B,C};{A,C,D};{A,B};{B,C};{A,C};订单关系中的货品号定义为外键第六页,共四十三页,编辑于2023年,星期日关系的性质在关系模型中,对关系作了下列规范性限制:(1)关系中每一个属性值都是不可分解的;(2)关系中不允许出现重复元组(即不允许出现相同的元组);(3)由于关系是一个集合,因此不考虑元组间的顺序,即没有行序;(4)元组中的属性在理论上也是无序的,但使用时按习惯考虑列的顺序。第七页,共四十三页,编辑于2023年,星期日2.1关系数据模型完整性约束(1)实体完整性约束实体完整性约束(EntityIntegrity)要求组成主键的属性不能为空值,(2)参照完整性约束参照完整性规则:如果X是关系R的外键,它与关系S的主键KS相对应,则对于R中每个元组在X上的值必须为:或者为空值(X包含的所有属性都为空值)或者等于S中某个元组的主键值(3)用户定义完整性约束例如:订货数不得小于0;订货数不得小于存货量第八页,共四十三页,编辑于2023年,星期日例1下面各种情况说明了参照完整性规则在关系中如何实现的。①在关系数据库中有下列两个关系模式: S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE)这里带下划线者为主键,SC关系中的S属性为外键。据规则要求关系SC中的S#值应该在关系S中出现。如果关系SC中有一个元组(S7,C4,80),而学号S7却在关系S中找不到,那么我们就认为在关系SC中引用了一个不存在的学生实体,这就违反了参照完整性规则。另外,在关系SC中S#不仅是外键,也是主键的一部分,因此这里S#值不允许空。第九页,共四十三页,编辑于2023年,星期日例2设工厂数据库中有两个关系模式: DEPT(D#,DNAME) EMP(E#,ENAME,SALARY,D#)车间模式DEPT的属性为车间编号、车间名,职工模式EMP的属性为工号、姓名、工资、所在车间的编号。每个模式的主键与外键已标出。在EMP中,由于D#不在主键中,因此D#值允许空。第十页,共四十三页,编辑于2023年,星期日2.1关系数据模型关系数据操作数据查询数据更新关系数据操作过程分类关系数据语言第十一页,共四十三页,编辑于2023年,星期日2.2关系代数五种基本关系代数运算并运算;差运算;投影运算;选择运算;广义笛卡尔乘积数据更新基本运算(对应于传统集合运算)更新操作:插入;删除;修改(两张表相兼容)Twotablesaresaidtobecompatibleifftheyhavethesameschema.Example:第十二页,共四十三页,编辑于2023年,星期日2.2关系代数1.插入-集合的并运算设有兼容关系R、S(即R、S具有相同的关系模式),则二者的并运算定义为:式中“∪”为并运算符,t为元组变量,结果R∪S为一个新的与R、S兼容的关系,该关系是由属于R或属于S的元组构成的集合。2.删除-集合的差运算设有兼容关系R、S,则二者的差运算定义为:式中“-”为差运算符,t为元组变量,结果R-S为一个新的与R、S兼容的关系,该关系是由属于R而且不属于S的元组构成的集合,即在R中减去与S中相同的那些元组。第十三页,共四十三页,编辑于2023年,星期日第十四页,共四十三页,编辑于2023年,星期日3.修改-并运算与差运算的组合设需要修改的元组构成关系R1,则先做删除,得R-R1。设需修改后的元组构成关系R2,此时将其插入,得到结果(R-R1)∪R2。2.2关系代数第十五页,共四十三页,编辑于2023年,星期日2.2关系代数数据查询基本运算1.关系属性的指定——投影运算

这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。

例子2-3第十六页,共四十三页,编辑于2023年,星期日2.关系元组选定——选择运算

选择操作是根据某些条件对关系做水平分割,即选取符合条件的元组。

例子第十七页,共四十三页,编辑于2023年,星期日赋值与别名关系R有如下字段Head(R)=A1...,An,如果希望创建一个新的关系S有如下属性Head(S)=B1,...,Bn,且属性Bi具有以下特性Dom(Bi)=Dom(Ai)foralli,1=i=n,并且关系s的记录和关系R相同.则我们可以通过赋值来定义关系S

S(B1,...,Bn):=R(A1,...,An).符号:=称为theassignmentoperator.(赋值运算符)如果仅需要重新定义表名,而不需要重新定义列名,我们可以S:=R.并称S为表R的表别名采用别名可以保存操作的中间结果.赋值操作符的左边只能是表名,不允许为表达式例如:(1)T:=(RS)-(RS)(2)T1:=(RS)T2:=((RS)T3:=T1-T2第十八页,共四十三页,编辑于2023年,星期日3.关系的联结——广义笛卡尔乘积运算

当两个关系中有属性重名时,要表名其Qualifiednames

即table_name.attribute_name思考:自己和自己做笛卡尔集,应该如何来做?例子第十九页,共四十三页,编辑于2023年,星期日第二十页,共四十三页,编辑于2023年,星期日第二十一页,共四十三页,编辑于2023年,星期日关系RS关系RS第二十二页,共四十三页,编辑于2023年,星期日2.2关系代数基本关系代数运算综合实例图有两个关系R和S,图2.13的(a)、(b)表示R∪S和R-S。(c)表示R×S,(d)表示πC,A(R),即π3,1(R)。(e)表示σB=‘b’ˊ(R)。(a)R∪S(b)R-S

(c)RS(d)(e)

RS第二十三页,共四十三页,编辑于2023年,星期日2.2关系代数基本关系代数运算综合实例学生关系:S(S#,Sn,Sex,Sa,Sd);课程关系:C(C#,Cn,P#,Tn);选课关系:SC(S#,C#,G),其中S#表示学号,Sn表示学生姓名,Sex表示学生性别,Sa表示学生年龄,Sd表示学生所在系别;C#表示课程号,Cn表示课程名,P#表示预修课程号,Tn表示任课教师姓名;G表示课程成绩。第二十四页,共四十三页,编辑于2023年,星期日例2-5学号为S17的学生因故退学,在S和SC中将其删去:例2-6检索不修读任何课程的学生学号:例2-7在关系C中增加一门新课程(C13,ML,C3,null):如果令这门新课程元组所构成的关系为R,则有:R=(C13,ML,C3,null),这时结果为:C∪R。学生关系:S(S#,Sn,Sex,Sa,Sd);课程关系:C(C#,Cn,P#,Tn);选课关系:SC(S#,C#,G),第二十五页,共四十三页,编辑于2023年,星期日例2-8将关系S中的年龄增加一岁:S(S#,Sn,Sd,Sa+1)例2-9检索学生年龄大于等于20岁的学生姓名:例2-10检索预修课程号为C2的课程的课程号:例2-11将关系S中学生S6的年龄改为22岁:其中,W为修改后的学生有序组构成的关系,即W=(S6,…,…,22)。…表示原值学生关系:S(S#,Sn,Sex,Sa,Sd);课程关系:C(C#,Cn,P#,Tn);选课关系:SC(S#,C#,G),第二十六页,共四十三页,编辑于2023年,星期日检索选修课程号为c2或c4的学生学号或者检索至少选修了课程号为c2和c4的学生学号学生关系:S(S#,Sn,Sex,Sa,Sd);课程关系:C(C#,Cn,P#,Tn);选课关系:SC(S#,C#,G),第二十七页,共四十三页,编辑于2023年,星期日2.2关系代数扩充关系代数运算1.交运算设有兼容关系R、S(即R、S具有相同的关系模式),则二者的并运算定义为:R∩S=R―(R―S)或R∩S=S―(S―R),所以交运算可以看作是组合运算,而不是基本运算。第二十八页,共四十三页,编辑于2023年,星期日2.2关系代数2.除法运算设关系R和S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的元组的集合。(R÷S)是满足下列条件的最大关系:其中每个元组t与S中每个元组u组成的新元组<t,u>必在关系R中。第二十九页,共四十三页,编辑于2023年,星期日第三十页,共四十三页,编辑于2023年,星期日

3.连接运算(join)联接有两种:θ联接和自然联接(这里θ是算术比较符)。(1)θ联接

≡{t︱t=<tr,ts>∧tr∈R∧ts∈S∧triθtsj}

第三十一页,共四十三页,编辑于2023年,星期日第三十二页,共四十三页,编辑于2023年,星期日(2)自然联接(naturaljoin)两个关系R和S的自然联接操作具体计算过程如下:①计算R×S;②设R和S的公共属性是A1,…,AK,挑选R×S中满足R.A1=S.A1,…,R.AK=S.AK

的那些元组;③去掉S.A1,…,S.AK这些列。定义:

πi1,…,im(σR.A1=S.A1∧...∧R.AK=S.AK(R×S)),其中i1,…,im为R和S的全部属性,但公共属性只出现一次。第三十三页,共四十三页,编辑于2023年,星期日第三十四页,共四十三页,编辑于2023年,星期日outerjoinLeftouterjoinRightouterjoin第三十五页,共四十三页,编辑于2023年,星期日外连接OUTERJOINDefinitiontheleftouterjoin/therightouterjoinExample

想查看所有学生的选课情况想查看准备开设的选修课程被选修的情况第三十六页,共四十三页,编辑于2023年,星期日例2-17检索课程号为C,且成绩为A的所有学生姓名:∏Sn(σC#=CG=A(SSC)

)例2-18检索S1所修读的课程名及其预修课号:∏Cn,P#(σS#=s1(CSC)

)例2-19检索年龄为20岁,并且预修课程成绩为A的学生所修读的课程名:∏Cn(σSn=20G=A(SSC

C

))学生关系:S(S#,Sn,Sex,Sa,Sd);课程关系:C(C#,Cn,P#,Tn);选课关系:SC(S#,C#,G),第三十七页,共四十三页,编辑于2023年,星期日关系代数运算小结(1)从运算的基本性与复合性考虑,关系代数运算可以分为:●基本关系代数运算:关于数据更新的并运算、差运算;关于数据查询的投影运算、选择运算和(广义)笛卡尔乘积运算。●扩充关系代数运算:交运算、除运算、连接与自然连结运算。关系代数中5个基本的运算:并、差、笛卡尔乘积、投影、选择,组成了关系代数完备的运算集。(2)从传统集合运算和关系数据库专门集合运算考虑,关系代数运算可以分为:●传统的集合运算:并、差、交和笛卡尔乘积。●专门的关系运算:投影、选择、连接和除法等。第三十八页,共四十三页,编辑于2023年,星期日第三十九页,共四十三页,编辑于2023年,星期日重要内容分析(一)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论