【文档说明】数据库系统概念关系模型总结课件.ppt,共(99)页,2.889 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92484.html
以下为本文档部分文字说明:
2022年12月5日星期一2数据库系统概念----关系模型提纲2.1关系数据库的结构2.2关系代数基本运算2.3附加的关系代数运算2.4扩展的关系代数运算2.5空值2.6数据库的修改本章之后讲解–5.1:元组关系演算–Ch
apter3-4:sql2022年12月5日星期一3数据库系统概念----关系模型关系模型回顾E.F.Codd于70年代初提出关系数据理论,他因此获得1981年的ACM图灵奖关系理论是建立在集合代
数理论基础上的,有着坚实的数学基础早期代表系统–SystemR:由IBM研制–INGRES:由加州Berkeley分校研制目前主流的商业数据库系统–Oracle,SQLServer,DB2…–Acc
ess,Foxpro,Foxbase2022年12月5日星期一4数据库系统概念----关系模型2.1.1关系数据结构单一的数据结构----关系–现实世界的实体以及实体间的各种联系均用关系来表示数据的逻辑结构----二维表–从用户角度,关系
模型中数据的逻辑结构是一张二维表2022年12月5日星期一5数据库系统概念----关系模型2.1.1关系基本概念域(Domain)–一组值的集合,这组值具有相同的数据类型–如整数的集合、字符串的集合、全体学生的集合笛卡尔积(Car’tesianProduct)–一组域D1,D2,…,Dn的
笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}–笛卡尔积的每个元素(d1,d2,…,dn)称作一个n-元组(n-tuple)–元组的每一个值di叫做一个分量(component)–若Di的
基数为mi,则笛卡尔积的基数为inim12022年12月5日星期一6数据库系统概念----关系模型2.1.1关系基本概念–例:设D1为教师集合(T)={t1,t2}D2为学生集合(S)={s1,s2,
s3}D3为课程集合(C)={c1,c2}则D1×D2×D3是个三元组集合,元组个数为2×3×2,是所有可能的(教师,学生,课程)元组集合–笛卡尔积可表示为二维表的形式TSCt1s1c1t1s1c2t1s2c1………t2s3c22022年12月5日星期一7数据库系统概念
----关系模型2.1.1关系基本概念关系–笛卡尔积D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,用R(D1,D2,…,Dn)表示–R是关系的名字,n是关系的度或目–关系是笛卡尔积中有意义的子集–关系也可以表示为二
维表关系TEACH(T,S,C)TSCt1s1c1t1s1c2t1s2c1t2s3c2元组属性2022年12月5日星期一8数据库系统概念----关系模型2.1.1关系基本概念关系的性质–列是同质的即每一列中的分量来自同一域,
是同一类型的数据如TEACH(T,S,C)={(t1,s1,c1),(t1,t2,c1)}是错误的–不同的列可来自同一域,每列必须有不同的属性名如P={t1,t2,s1,s2,s3},C={c1,c2},则TEACH不能写成TEACH(P,P,C),还应写成TEACH(T,S,C)202
2年12月5日星期一9数据库系统概念----关系模型2.1.1关系基本概念–行列的顺序无关紧要遵循这一性质的数据库产品(如ORACLE),增加新属性时,永远是插至最后一列但也有许多数据库产品没有遵循这
一性质,例如FoxPro仍然区分了属性顺序–任意两个元组不能完全相同(集合内不能有相同的两个元素)由笛卡尔积的性质决定,但许多关系数据库产品没有遵循这一性质–例如,Oracle,FoxPro等都允许关系表中存在两
个完全相同的元组,除非用户特别定义了相应的约束条件2022年12月5日星期一11数据库系统概念----关系模型2.1.2数据库模式DBschema关系的模式和实例关系模式(型),关系(变量),实例(值)表述方式–关系模
式:S(sno,sname,dept)–关系及关系模式:sc∈SC不同关系中属性名称相同,用以阐述不同关系的元组之间的联系ssccSnoSnameDeptSnoCnoScoreCnoCnameS1甲计S1C180C1DSS2乙软S1C290C2DBS3丙软S2C1702022年
12月5日星期一12数据库系统概念----关系模型2.1.2数据库模式关系模式表现了型的概念,它代表着表的框架;关系表现为值的概念,成为关系实例一个关系模式下可以建立多个关系,例如在学生关系的关系模
式下,可以为全校所有班级各建一个学生表表是动态的,是数据库中数据的快照关系数据库是关系的集合,其中每个关系都有自己的关系模式2022年12月5日星期一13数据库系统概念----关系模型2.1.2模式构造问题S同SC合并为一个表如何?–优点:表的数量少–缺点:数
据冗余、被迫引入空值、插入异常、删除异常…模式构造的方法和原则SCSnoCnoScoreS1C180S1C290S2C170SSnoSnameS1甲S2乙S3丙S-SCSnoSnameCnoScoreS1甲C180S1甲C290S2乙C1
70S3丙2022年12月5日星期一14数据库系统概念----关系模型2.1.2模式构造问题–银行例子2022年12月5日星期一15数据库系统概念----关系模型2.1.2模式构造问题2022年12月5日星期一16数据库系统概念----关系模型其他可能的模式优点:表的数量少缺点:数据冗余
、被迫引入空值、插入异常、删除异常…2022年12月5日星期一17数据库系统概念----关系模型2.1.3码超码(superkey)–是一个或多个属性的集合,这些属性的集合可以使我们在一个关系中唯一地标识一个元组候选码(CandidateKey)–关
系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码,如DEPT中的D#,DN都可作为候选码–任何一个候选码中的属性称作主属性,如SC中的S#,C#2022年12月5日星期一18数据库系统概念----关系模型2.
1.3码主码(PrimaryKey)–进行数据库设计时,从一个关系的多个候选码中选定一个作为主码,如可选定D#作为DEPT的主码外部码(ForeignKey)–关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码,如S关系中的D#属性–R是参照关
系(ReferencingRelation)–S是被参照关系(ReferencedRelation)–R通过外码F参照关系S如何确定超码–按照现实世界语义约束定义码–不能依据对数据的归纳总结定义码2022年12月5日星期一
19数据库系统概念----关系模型模式图schemadiagram模式图表示各关系模式属性主码关系引用2022年12月5日星期一20数据库系统概念----关系模型我们常用的例子数据结构–单一的数据结构——关系–实体
集、联系都表示成关系DEPT(D#,DN,DEAN)S(S#,SN,SEX,AGE,D#)C(C#,CN,PC#,CREDIT)SC(S#,C#,SCORE)PROF(P#,PN,D#,SAL)学生选修属于系教师工作管理课程先修20
22年12月5日星期一21数据库系统概念----关系模型关系模型DEANDND#DEPTD#AGESEXSNS#SPC#CREDITCNC#CD#SALPNP#PROFSCOREC#S#SC2022年12月5日星期一22数据库系统概
念----关系模型例子S#SNAGESDS#C#G9801张三20D19801C1629805李四21D29801C2739805C380SSC2022年12月5日星期一23数据库系统概念----关系模型关系模式的完整性实体完整性–关系的主码
中的属性值不能为空值–空值:不知道或无意义–意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的2022年12月5日星期一24数据库系统概念----关系模型关系模式
的完整性关系模型必须遵守实体完整性规则的原因–实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集或多对多联系–现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识–相应地,关系模型中以主码作为唯一性标识–主码中的属性即主属性不能取空值空值就是‚
不知道‛或‚无意义‛的值主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与实体的可区分性相矛盾,因此这个规则称为实体完整性2022年12月5日星期一25数据库系统概念----关系模型关系模式的完整性注意–实体完整性规则规定基本关系的所有主属性都不能取空值–例选修(学号,
课程号,成绩)‚学号、课程号‛为主码,则两个属性都不能取空值。2022年12月5日星期一26数据库系统概念----关系模型关系模式的完整性参照完整性(ReferentialIntegrity)在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在
着关系与关系间的引用–例1学生实体、专业实体以及专业与学生间的一对多联系学生(学号,姓名,性别,院系编号,年龄)专业(院系编号,专业名)2022年12月5日星期一27数据库系统概念----关系模型关系模式的完整性
–参照完整性如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在例如关系S在D#
上的取值有两种可能–空值,表示该学生尚未分到任何系中–若非空值,则必须是DEPT关系中某个元组的D#值,表示该学生不可能分到一个不存在的系中2022年12月5日星期一28数据库系统概念----关系模型关系模式的完整性
学号姓名性别专业号年龄801张三女0119802李四男0120803王五男0120804赵六女0220805钱七男0219专业号专业名01信息02数学03计算机2022年12月5日星期一29数据库系统概念----关系模型
关系模式的完整性学生、课程、学生与课程之间的多对多联系学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)2022年12月5日星期一30数据库系统概念----关系模型关系模式的完整
性学生实体及其内部的领导联系(一对多)学号姓名性别专业号年龄班长801张三女0119802802李四男0120803王五男0120802804赵六女0220805805钱七男02192022年12月5日星期一31数据库系统概念----关系模型关系模式的完整性–用户定义的完整性用户针对具
体的应用环境定义的完整性约束条件如S#要求是8位整数,SEX要求取值为‚男‛或‚女‛–系统支持实体完整性和参照完整性由系统自动支持系统应提供定义和检验用户定义的完整性的机制2022年12月5日星期一32数据库系统概念----关系模型关系模式的完整性课程(课程号,课程名,学分)–‚课程名‛属性
必须取唯一值–非主属性‚课程名‛也不能取空值–‚学分‛属性只能取值{1,2,3,4}2022年12月5日星期一33数据库系统概念----关系模型关系模式的完整性供应商号供应商名所在城市B01红星北京S10宇宙上海T20黎明天津Z01
立新重庆零件号颜色供应商号010红B01312白S10201蓝T20今要向关系P中插入新行,新行的值分别列出如下。哪些行能够插入?A.(‘037’,‘绿’,null)B.(null,‘黄’,‘T20’)C.(‘201’,‘红’,‘T20’)D.(‘105’,‘蓝
’,‘B01’)E.(‘101’,‘黄’,‘T11’)零件关系P(主码是‚零件号‛,外码是‚供应商号‛)供应商关系S(主码是‚供应商号‛)2022年12月5日星期一34数据库系统概念----关系模型2.1.4查询语言关系操作–关系操作是集合操作,操作的对象及结果都是集合,
是一次一集合(Set-at-a-time)的方式而非关系型的数据操作方式是一次一记录(Record-at-a-time)–关系操作可以用关系代数和关系演算两种方式来表示,它们是相互等价的如用关系代数来表示关系的操作,可以有选择、投影、连接、除、交、差、并等2022年12月5日星期一35
数据库系统概念----关系模型2.1.4查询语言关系数据语言的特点–一体化一般关系系统的数据语言都同时具有数据定义、数据操纵和数据控制语言,而不是分为几个语言。对象单一,都是关系,因此操作符也单一。而非关系型系统,如DBTG,有对记录的操作,有对关系
的操作–非过程化用户只需提出‚做什么‛,无须说明‚怎么做‛,存取路径的选择和操作过程由系统自动完成–面向集合的存取方式操作对象是一个或多个关系,结果是一个新的关系(一次一关系)。非关系系统是一次一记录的方式2022年12月5日星期一36数据库系统概念----关系模型
2.1.4查询语言抽象的查询语言–关系代数用对关系的运算来表达查询,需要指明所用操作–关系演算用谓词来表达查询,只需描述所需信息的特性元组关系演算–谓词变元的基本对象是元组变量域关系演算–谓词变元的基本对象
是域变量2022年12月5日星期一37数据库系统概念----关系模型2.1.4查询语言具体系统中的实际语言–SQL介于关系代数和关系演算之间,由IBM公司在研制SystemR时提出–QUEL基于Codd提出的元组关系演算语言A
LPHA,在INGRES上实现–QBE基于域关系演算,由IBM公司研制2022年12月5日星期一38数据库系统概念----关系模型2.2关系代数运算汇总基本运算–一元运算选择、投影、更名–多元运算笛卡儿积、并、集合差其它运算–集合交、θ连接、自然连接
、除、赋值2022年12月5日星期一39数据库系统概念----关系模型2.2关系代数的一些记号给定关系模式R(A1,A2,…,An),设R是它的一个具体的关系,tR是关系的一个元组分量–设tR,则t[Ai]表示
元组t中相应于属性Ai的一个分量属性列–A={Ai1,Ai2,…,Aik}{A1,A2,…,An},称A为属性列–A表示{A1,A2,…,An}中去掉A后剩余的属性组–t[A]=(t[Ai1],t[Ai2],…,t[Aik])2022年12月5日星期一40数据库系
统概念----关系模型2.2.1基本运算--选择运算定义在关系R中选择满足给定条件的元组(从行的角度)F(R)={t|tR,F(t)=‘真’}F是选择的条件,tR,F(t)要么为真,要么为假F的形式:由逻辑运算符连接算术表达式而成逻辑表达式
:,,算术表达式:XYX,Y是属性名、常量、或简单函数是比较算符,{,,,,,≠}2022年12月5日星期一41数据库系统概念----关系模型2.2.1基本运算--选择运算选择运算是从行的角度进行的运算σ2022年12
月5日星期一42数据库系统概念----关系模型2.2.1基本运算--选择运算ABC367257723443RA<5(R)ABC367257443A<5C=7(R)ABC3672572022年12月5日星
期一43数据库系统概念----关系模型2.2.1基本运算--选择运算示例–找perridge支行的存款branch_name=‘perridge’(account)–找年龄不小于20的男学生AGE≥20
∧SEX=‘male’(S)2022年12月5日星期一44数据库系统概念----关系模型2.2.2基本运算--投影定义–从关系R中取若干列组成新的关系(从列的角度)A(R)={t[A]|tR},AR–投
影的结果中要去掉相同的行cbcfedcbaCBABCbcefRB,C(R)2022年12月5日星期一45数据库系统概念----关系模型2.2.2基本运算--投影投影操作主要是从列的角度进行运算π2022年12月5日星期一46数据库系统概
念----关系模型2.2.2基本运算--投影示例给出所有学生的姓名和年龄SN,AGE(S)2022年12月5日星期一47数据库系统概念----关系模型2.2.2基本运算--投影示例找001号学生所选修的课程号C#(S#=001(SC))2022年12月5
日星期一48数据库系统概念----关系模型2.2.3基本运算--并运算定义–所有至少出现在两个关系中之一的元组集合RS={r|rRrS}RS两个关系R和S若进行并运算,则它们必须是相容的:关系R和
S必须是同元的,即它们的属性数目必须相同对i,R的第i个属性的域必须和S的第i个属性的域相同不要求对应列同名2022年12月5日星期一49数据库系统概念----关系模型2.2.3基本运算--并运算ABC367257723443RABC345723SABC3672577
23443345R∪S2022年12月5日星期一50数据库系统概念----关系模型2.2.3基本运算--并运算示例–求选修了001号或002号课程的学生号方案1:∏S#(C#=001∨C#=002(SC))方案2:∏S
#(C#=001(SC))∪∏S#(C#=002(SC))2022年12月5日星期一51数据库系统概念----关系模型2.2.4基本运算--差运算定义–所有出现在一个关系而不在另一关系中的元组集合RS=
{r|rRrS}–R和S必须是相容的RSSR2022年12月5日星期一52数据库系统概念----关系模型2.2.4基本运算--差运算ABC367257723443RABC345723SABC367257443R-SABC345S-R2022年12月5日星期一
53数据库系统概念----关系模型2.2.4基本运算--差运算示例–求选修了001号而没有选002号课程的学生号∏S#(C#=001(SC))-∏S#(C#=002(SC))–求未选修c1号课程的学生号方案1:∏S#(S)-∏S#(C#=c1(SC))方案2:∏S#(
C#≠c1(SC))哪一个正确?96c2s195c1s290c1s1GC#S#……s3……s2……s1AGESNS#2022年12月5日星期一54数据库系统概念----关系模型基本运算的分配律投影和并可以分配∏pid,name(
S∪T)≡∏pid,name(S)∪∏pid,name(T)投影和差不可分配∏pid,name(S-T)≠∏pid,name(S)-∏pid,name(T)tPidTnoTnamep1t1甲p3t2丙sPidSnoSnamep1s1甲p2s2乙2022年12月5日星期一55数据库系统概念
----关系模型2.2.5基本运算--笛卡尔积运算元组的连串(Concatenation)–若r=(r1,…,rn),s=(s1,…,sm),则定义r与s的连串为:定义–两个关系R,S,其度分别为n,m,则它们的笛卡尔积是所有这样的元组集合:元组的前n个分量是R中的一个元组,后m个分量是S中的
一个元组–RS的度为R与S的度之和,RS的元组个数为R和S的元组个数的乘积rs=(r1,…,rn,s1,…,sm)RS={rs|rRsS}2022年12月5日星期一56数据库系统概念----关系模型2.2.5基本运算--笛卡尔积运算运
算结果的命名r.a1关系名前缀的省略不要求同属性值相同,即允许新元组中s.sno<>sc.sno2022年12月5日星期一57数据库系统概念----关系模型2.2.5基本运算--笛卡尔积运算AB12rCD
10102010EaabbsAB11112222CD1010201010102010Eaabbaabbrxs2022年12月5日星期一58数据库系统概念----关系模型2.2.5基本运算
--笛卡尔积运算A=C(rxs)–rxs–A=C(rxs)aabAB11112222CD1010201010102010EaabbaabbABCDE1221020202022年12月5
日星期一59数据库系统概念----关系模型2.2.5基本运算--笛卡尔积运算求计算机系学生的选课情况(sno,sname,cno,score)思考:有几种写法?哪种效率更高?SSCCSnoSnameDeptSnoCnoScoreCnoCnameS1甲计S1C180C1D
SS2乙软S1C290C2DBS3丙软S2C170S4丁计S3C2602022年12月5日星期一60数据库系统概念----关系模型2.2.6基本运算--更名运算(rename)定义–给一个关系表达式赋予名字x(E)返回表达式E的结果,并把名字x赋给Ex(A1,A2,,An)(
E)返回表达式E的结果,并把名字x赋给E,同时将各属性更名为A1,A2,,An–关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参与同一运算时很有帮助2022年12月5日星期一61数据库系统概念----关系模型2.2.6基本运算--
更名运算(rename)ABC367257723443RABC345723SR1(R),R2(R–S)R3(x,y,z)(A<5C=7(R))2022年12月5日星期一62数据库系统概念----关系模型2.2.6基本运算
--更名运算(rename)示例–求数学成绩比王红同学高的学生89数学张军86数学王红93物理张军成绩课程姓名∏S.姓名(R.成绩S.成绩R.课程=数学S.课程=数学R.姓名=王红(R
S(R)))R86数学王红86数学王红86数学王红R.成绩R.课程R.姓名89数学张军86数学王红93物理张军S.成绩S.课程S.姓名2022年12月5日星期一63数据库系统概念----关系模型2.2.6基本运算--更名运算(rename)找出所有与smith居住在同一城市同一街道的客户∏
customer.name(customer.street=s_add.streetcustomer.ity=s_add.city(customers_add(street,city)(∏str
eet,city(name=‘smith’(customer)))))2022年12月5日星期一64数据库系统概念----关系模型2.2.7关系代数的形式化定义关系代数的基本表达式:–数据库中的一个关系–一个常数关系关系代数中的表达式是由更
小的子表达式构成的,假设E1和E2是关系代数表达式,则下列都是关系代数表达式:–E1E2–E1-E2–E1XE2–p(E1)–p(E1)–x(E1)关系代数表达式仅限于上述运算的有限次复合2022年12月5日星期一65数据库系统概念----关系
模型2.2关系代数查询实例–求未选修c1号课程的学生号方案1:∏S#(S)-∏S#(C#=c1(SC))方案2:∏S#(C#≠c1(SC))哪一个正确?96c2s195c1s290c1s1GC#S#……s3
……s2……s1AGESNS#2022年12月5日星期一66数据库系统概念----关系模型–求仅选修了c01号课程的学生号选修c01号课程的学生-选c01号课程之外的学生=∏S#(C#=c01(SC))-∏S#(SC-C#=c01(SC))2.2关系代数查询实例S#C#
SCOREP01C0196P02C0190P03C0288P01C0392S#C#SCOREP01C0196P02C0190S#C#SCOREP03C0288P01C0392S#P01P02S#P01P03S#P022022年12月5日星期一67数据库系统概念----关系模型2.2关系
代数基本运算-练习1.求学了c1课程的学生sno,sname2.求没有学c1课程的学生sno,sname3.求哪些学生没有学哪些课(sno,cno)SSCCSnoSnameDeptSnoCnoScoreCnoCnameS1甲计S1C180C1DSS2乙软S1C290C2DBS3丙软S2C170S
4丁计S3C2602022年12月5日星期一68数据库系统概念----关系模型2.2关系代数基本运算-课外练习1.求学了c1或c2课程的学生sno,sname2.求学了c1和c2课程的学生sno,sname3.求学了c1没有学c2课程的学生sno,sname4.求只学了c1课程
的的学生sno5.求计算机系学生的‚DB”成绩(sno,sname,score)请考虑:有几种写法?你能不能给出效率最高的写法?6.求每个学生的单科最高成绩以及相应课程号(sno,max_score,cno)SSCCSnoSn
ameDeptSnoCnoScoreCnoCnameS1甲计S1C180C1DSS2乙软S1C290C2DBS3丙软S2C170S4丁计S3C2602022年12月5日星期一69数据库系统概念----关系模型2.3附加运算为了书写方便,扩展了若干操作,称为附加运算附加运算没
有实质地扩展关系代数的能力附加运算的种类交(r∩s)自然连接(rs)除(r÷s)赋值运算(←)2022年12月5日星期一70数据库系统概念----关系模型定义–所有同时出现在两个关系中的元组集合RS={r|rRrS}–交运算可以通过
差运算来重写RS=R(RS)=S(SR)2.3.1交运算RS2022年12月5日星期一71数据库系统概念----关系模型2.3.1交运算344327752763CBAR327543CBAS327CBA
R∩S2022年12月5日星期一72数据库系统概念----关系模型2.3.1交运算示例求同时选修了001号和002号课程的学生号错误的写法:∏S#(C#=001C#=002(SC))正确的写法:∏S#(C#=001(S
C))∩∏S#(C#=002(SC))2022年12月5日星期一73数据库系统概念----关系模型定义–从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组A,B为R和S上度数相等且可比的属性列为算术比较符,为等号时称为等值连接–RS=r[A]S[B](R×S)补充--连接
ABABRS={rs|rRsSr[A]S[B]}2022年12月5日星期一74数据库系统概念----关系模型B<D补充--连接–求数学成绩比王红同学高的学生。987654321CBADE31
62ABCDE123311236245662RSRS∏S.姓名((课程=数学姓名=王红(R))(课程=数学S(R)))R.成绩<S.成绩2022年12月5日星期一75数据库系统概念----关系模型定义–从两个关系的广义笛卡儿积中选取在相同属性列B上取值
相等的元组,并去掉重复的列。–自然连接与等值连接的不同自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。–当R与S无相同属性时,RS=R×S–可交换,可结合ssc≡scs
(ssc)c≡s(scc)2.3.2自然连接RS={rs[B]|rRsSr[B]=S[B]}2022年12月5日星期一76数据库系统概念----关系模型2.3.2自然连接AB12412CDaababrB13123DaaabbEs
11112aaaabABCDErs2022年12月5日星期一77数据库系统概念----关系模型2.3.2自然连接示例求001号学生所在系的名称∏DN(S#=001(S)DEPT)987654321CBACD3162RSABCD12314562
RS2022年12月5日星期一78数据库系统概念----关系模型2.3.3除运算课程数学物理=物理李明数学张军数学王红物理张军课程姓名姓名张军2022年12月5日星期一79数据库系统概念----关系模型2.3.3除运算象集(ImageSet)–关系R(X
,Z),X,Z是属性组,x是X上的取值,定义x在R中的象集为Zx={t[Z]|tRt[X]=x}从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量XZ张军同学所选修的全部课程x=张军Zx数学张军数学王红物理张军课程姓名课程数学物理2022年12月5日星期一88数
据库系统概念----关系模型2.3.4赋值运算定义–为使查询表达简单、清晰,可以将一个复杂的关系代数表达式分成几个部分,每一部分都赋予一个临时关系变量,该变量可被看作关系而在后面的表达式中使用临时关系变量关系代数表达式–赋值给临时关系变量只是一种结果的传递,而赋值给永久关系则意
味着对数据库的修改2022年12月5日星期一89数据库系统概念----关系模型2.3.4赋值运算示例RS=X(R)X(X(R)Y(S)R)用赋值重写为:temp1X(R)temp2X(temp1
Y(S)R)resulttemp1temp22022年12月5日星期一91数据库系统概念----关系模型2.5空值,Null空值的语义不知道或不存在空值的表现–参与算术运算:结果为Null–参与比较运算:结果为Null–参与
逻辑运算:1、Nullortrue=ture2、Nullandfalse=false3、其它情况结果为null空值是一种状态,不是一个明确的值SSnoSnameDeptSageS1甲计20S2乙软21S3丙软S4丁202022年12月5日星期一92数据库系统概念----
关系模型2.5关系代数对空值的处理不是总有道理,更多的时候是定义σθ(E)–保留使θ确定地为真的元组–求20岁的学生–求不是20岁的学生ΠA1,A2…(E)–元组表现相同(认为表示的语义相同),则保留一个元组–求各系年龄分布(dept,s
age)∪∩-:与Π的处理原则一致SSnoSnameDeptSageS1甲计20S2乙软21S3丙软S4丁软2022年12月5日星期一93数据库系统概念----关系模型2.4扩展的关系代数关系代数扩展的几个运算:–广义投影–聚集、分组聚集–外连接扩展的关系代
数运算:–对关系代数的查询能力进行了一些经常需要的扩展–一般地讲,扩展的运算属于关系代数–严格地说,扩展的运算不属于关系代数运算2022年12月5日星期一94数据库系统概念----关系模型2.4.1广义投影定义–在投影列表中使
用算术表达式来对投影进行扩展F1,F2,…,Fn(E)F1,F2,…,Fn是算术表达式as更名示例–求教工应缴纳的所得税P#,SAL*5/100(PROF)R(p#,INCOME-TAX)(P#,
SAL*5/100(PROF))2022年12月5日星期一95数据库系统概念----关系模型2.4.2聚集函数定义–求一组值的统计信息,返回单一值–使用聚集的集合可以是多重集,即一个值可以重复出现多次。如果想去除重复值,可以用连接符‘-’将‘dist
inct’附加在聚集函数名后,如sum-distinct–sum:求和求全体教工的总工资sumSAL((PROF))求001号学生的总成绩sumSCORE(S#=001(SC))2022年12月5日星期一96数据库系统概念----关系模型2.4.2聚集函数–avg:求平均求001号同学选
修课程的平均成绩。avgSCORE(S#=001(SC))–count:计数求001号同学选修的课程数。countC#(S#=001(SC))求任课老师的总数。count-distinctP#(PC)2022年12月5日星期一97数据库系统概念-
---关系模型–max:求最大值min:求最小值求学生选修数学的最高成绩maxSCORE(CN=数学(C)SC))分组–将一个元组集合分为若干个组,在每个分组上使用聚集函数。属性下标G聚集函数属性下标(关系)2.4.2聚集函数对此属性在每个分组上运用聚集函数按此属性上的值对
关系分组2022年12月5日星期一98数据库系统概念----关系模型2.4.2聚集函数–分组运算G的一般形式G1,G2,...,GnGF1,A1,F2,A2,…,Fm,Am(E)Gi是用于分组的属性,Fi是聚集函数,Ai是属性名。G将E分为若干组,满足:
1)同一组中所有元组在G1,G2,...,Gn上的值相同。2)不同组中元组在G1,G2,...,Gn上的值不同。示例求每位学生的总成绩和平均成绩S#GsumSCORE,avgSCORE(SC)2022年12月5日星期一99数据库系统概念----关系模
型RABC77310gsum(c)(R)sum-C272.4.2聚集函数2022年12月5日星期一100数据库系统概念----关系模型2.4.2聚集函数branch-nameaccount-numberbalan
cePerryridgePerryridgeBrightonBrightonRedwoodA-102A-201A-217A-215A-222400900750750700branch-namebalancePerryridgeBrightonRedwood13001500700acco
untbranch-namegsum(balance)(account)2022年12月5日星期一102数据库系统概念----关系模型2.5Null:聚集对空值的处理不是总有道理,更多的时候是定义聚集函数中的null–1、多重集中忽略null–2、聚集函数作用于空集合:count
(Φ)=0;其它聚集函数作用于空集合,结果为null示例,snoG……(sc):SCSnoCnoScoreS1C180S1C2S1C380S1C495S2C1S2C3SnoCount(*)Count(sco
re)Count-distinct(score)Max(score)Avg(score)S14329585S22002022年12月5日星期一103数据库系统概念----关系模型2.5关系代数对空值的处理:总结不是总有道理,更多的时候是定义σθ(E)–保留使θ确定地
为真的元组ΠA1,A2…(E)–元组表现相同,则保留一个元组–认为含有空值的元组,空值表示的语义相同∪∩-:与Π的处理原则一致聚集函数中的null–1、多重集中忽略null–2、聚集函数作用于空集合:count(Φ)=0;其它聚集函数作用于空集合,结果为null2022
年12月5日星期一104数据库系统概念----关系模型–例:列出老师的有关信息,包括姓名、工资、所教授的课程∏P#,PN,SAL,C#,CN((PROF)PCC)2.4.3外连接500李三P04600700800SAL孙立P03钱广P02赵明P01PNP#化学C03数学
C02物理C01CNC#P04C02P02C02P01C01P#C#数学C02500李三P04数学C02700钱广P02物理C01800赵明P01CNC#SALPNP#问题:有关P03号职工的姓名和工资信息没有显示出来20
22年12月5日星期一105数据库系统概念----关系模型外连接–为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接外连接=自然连接+失配的元组–外连接的形式:
左外连接、右外连接、全外连接左外连接=自然连接+左侧表中失配的元组右外连接=自然连接+右侧表中失配的元组全外连接=自然连接+两侧表中失配的元组2.4.3外连接2022年12月5日星期一106数据库系统概念-
---关系模型2.4.3外连接500李三P04600700800SAL孙立P03钱广P02赵明P01PNP#化学C03数学C02物理C01CNC#P04C02P02C02P01C01P#C#数学C02500李三P04数学C02700钱广P02物理C01800赵明P01CNC#SA
LPNP#所有老师的信息P03孙立600nullnull2022年12月5日星期一107数据库系统概念----关系模型2.4.3外连接500李三P04600700800SAL孙立P03钱广P02赵明P01PNP#化学C03数学C02物理C01CNC#P04C02P02C02P0
1C01P#C#数学C02500李三P04数学C02700钱广P02物理C01800赵明P01CNC#SALPNP#所有课程的信息nullnullnullC03化学2022年12月5日星期一108数据库系统概念----关系模型2.4.3外连接500李三
P04600700800SAL孙立P03钱广P02赵明P01PNP#化学C03数学C02物理C01CNC#P04C02P02C02P01C01P#C#数学C02500李三P04数学C02700钱广P02物理C01800赵明
P01CNC#SALPNP#所有老师和课程的信息P03孙立600nullnullnullnullnullC03化学2022年12月5日星期一109数据库系统概念----关系模型2.4扩展的关系代数:课外练习1、求每门课程的修课人数及其平均成绩;2、求每门课程的课
程名及其平均成绩;3.求修课人数最多的课程号(cno)及相应修课人数;4、求平均成绩高于s2平均成绩的学生学号;5、求最高的学生平均成绩及相应学生学号;6、求计算机系所有学生的C1课程成绩–要求结果为三元组(sno,sname,c1_score)–要求计算机系没有学c1
的学生成绩为空值2022年12月5日星期一110数据库系统概念----关系模型2.6数据库的修改关系代数是‚pure‛查询语言经典的关系代数不具备数据库修改能力本节扩展的用关系代数表示的数据库修改方法,同真正的数据库修改方法基本思路不一致,对数据库修改研究没有指导价值
本节不作学习要求