您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 数据库5版讲稿第五章----其它关系语言
2020年2月10日星期一2数据库系统概念----关系模型5.1元组关系演算概念用一阶谓词演算表示关系的操作叫关系演算设关系r有元组t1,t2,…tm,则它对应一个谓词P,t1,t2,…,tm是P的成真指派,其它非r中的任意元组则是P的成伪指派。给出一个元组t,当它在r中时P(t)为真,否则P(t)为假。注意P(t)是一个谓词公式,它是由原子公式经复合运算而成。2020年2月10日星期一3数据库系统概念----关系模型元组关系演算形式化定义{t|P(t)}表示所有使谓词P为真的元组集合–t为元组变量–P是公式由原子公式和运算符组成2020年2月10日星期一4数据库系统概念----关系模型元组关系演算原子公式,为三类:–(1)t∈r为原子公式。表示t是r的一个元组。–(2)u[i]θv[j]是原子公式。u,v是元组变量,θ是比较运算符,u[i]θv[j]表元组u的第i个分量与元组v的第j个分量间的比较运算。–(3)u[i]θC是原子公式。C为常数,θ比较运算符,u[i]θC表示元组的第i个分量与常数的比较运算。2020年2月10日星期一5数据库系统概念----关系模型元组关系演算–公式的递归定义原子公式是公式如果P是公式,那么┑P也是公式如果P1,P2是公式,则P1P2,P1P2,P1→P2也是公式如果P(t)是公式,r是关系,则tr(P(t))和tr(P(t))也是公式2020年2月10日星期一6数据库系统概念----关系模型元组关系演算–其中是“全称”量词,是“存在量词”,若公式的变量前有或,则这个变量为约束变量,否则为自由变量。这些概念与谓词逻辑中的概念一样。–给定集合r={t1,t2,…,tn}tr(P(t))=P(t1)∧P(t2)∧…∧P(tn)tr(P(t))=P(t1)∨P(t2)∨…∨P(tn)2020年2月10日星期一7数据库系统概念----关系模型元组关系演算–公式中运算符的优先次序为–(1)比较运算符:>,<,≤,≥,=,≠;–(2),–(3)“否定”:┑–(4)“与”,“或”,“蕴含”:∧,∨,→。–如果公式中使用括号,括号的优先级最高。2020年2月10日星期一8数据库系统概念----关系模型元组关系演算–公式的等价性P1P2┑(┑P1┑P2)tr(P(t))┑tr(┑P(t))P1P2┑P1P2TTTFFTTTTFFFFFTTTFTT┑pqpq┑pqp2020年2月10日星期一9数据库系统概念----关系模型元组关系演算987654321CBA965643321CBArS965643CBA{t|tSt[A]2}654987CBA{t|tr┑tS}2020年2月10日星期一10数据库系统概念----关系模型元组关系演算768738798435CBA{t|ur(vS(u[A]v[B]t[A]=u[B]t[B]=v[C]t[C]=u[A]))}987654321CBA965643321CBArS2020年2月10日星期一11数据库系统概念----关系模型元组关系演算元组关系演算与关系代数的等价性–(1)r∪S={t|t∈r∨t∈s}–(2)r-S={t|t∈r∧┑t∈s}–(3)σF(r)={t|t∈r∧F′}(F′为F在谓词演算中的表示形式)–(4)ΠAi1、Ai1,…,Aik(r)=–{t|u∈r(t[Ai1]=u[Ai1]∧t[Ai2]=u[Ai2]∧…∧t[Aik]=u[Aik]}2020年2月10日星期一12数据库系统概念----关系模型元组关系演算或者ΠAi1、Ai1,…,Aik(r)={t|u∈r(t[1]=u[Ai1]∧t[2]=u[Ai2]∧…∧t[k]=u[Aik]}结果元组有k个分量。(5)r×s={t|u∈r(v∈s(t[1]=u[1]∧…∧t[n]=u[n]∧t[n+1]=V[1]∧…∧t(n+m)=V[m]))}注意:并、差、选择不用量词,投影、笛卡尔积用量词表示。量词是扫描一遍的意义。2020年2月10日星期一13数据库系统概念----关系模型元组关系演算学生学号姓名性别年龄系别98001张平男19计算机98002王欣女19计算机98003李华女20数学98004赵岩男18外语2020年2月10日星期一14数据库系统概念----关系模型元组关系演算课程课程号课程名先行课号学分1数据库542数学63软件工程544操作系统745数据结构746计算机网络437C语言32020年2月10日星期一15数据库系统概念----关系模型元组关系演算选课学号课程号成绩9800119098001286980015929800258098002177980023942020年2月10日星期一16数据库系统概念----关系模型元组关系演算关系演算举例例:检索学生关系中所有学生的情况。解:{t|t∈学生}选择运算不用量词例:求计算机系的学生姓名。解:{t|u∈学生(t[姓名]=u[姓名]∧u[系别]=“计算机”)}投影运算用量词,t[姓名]=u[姓名]表示出投出的结果–2020年2月10日星期一17数据库系统概念----关系模型元组关系演算例:求年龄大于20岁女学生的姓名。解:{t|u∈学生(t[姓名]=u[姓名]∧u[年龄]>20∧u[性别]=“女”)}例:求学号为98001学生所选课程的课程号及成绩。解:{t|u∈选课(t[课程号]=u[课程号]∧t[成绩]=u[成绩]∧u[学号]=‘98001’)}2020年2月10日星期一18数据库系统概念----关系模型元组关系演算例:找出选修了课程号为‘5’的课程的所有学生的姓名。解:{t|u∈学生(v∈选课(t[姓名]=u[姓名]∧u[学号]=v[学号]∧v[课程号]=‘5’)}2020年2月10日星期一19数据库系统概念----关系模型元组关系演算例:找出选修了课程号为‘5’或‘3’的课程的所有学生的姓名。解:{t|u∈学生(v∈选课(t[姓名]=u[姓名]∧u[学号]=v[学号]∧(v[课程号]=‘5’∨v[课程号]=‘3’)]}2020年2月10日星期一20数据库系统概念----关系模型元组关系演算例:求选修了数据库课程的所有学生姓名,成绩。解:{t|u∈学生(v∈选课(w∈课程(t[姓名]=u[姓名]∧t[成绩]=v[成绩]∧u[学号]=v[学号]∧v[课程号]=w[课程号]∧w[课程名]=“数据库”)}2020年2月10日星期一21数据库系统概念----关系模型元组关系演算例:求选修了所有课程的学生姓名,成绩。解:{t|u∈学生(w∈课程(v∈选课(t[姓名]=u[姓名]∧t[成绩]=v[成绩]∧u[学号]=v[学号]∧v[课程号]=w[课程号])))}2020年2月10日星期一22数据库系统概念----关系模型元组关系演算例:求至少选修了课程号为‘5’和‘3’的课程的所有学生的姓名解:{t|u∈学生(v∈选课(w∈选课(t[姓名]=u[姓名]∧u[学号]=v[学号]∧u[学号]=w[学号]∧v[课程号]=’5’∧w[课程号]=’3’)))}2020年2月10日星期一23数据库系统概念----关系模型元组关系演算例:求不选修了课程号为‘5’的课程的学生的姓名解:{t|u∈学生(v∈选课(u[学号]=v[学号]→v[课程号]’5’∧t[姓名]=u[姓名]))}–2020年2月10日星期一24数据库系统概念----关系模型元组关系演算例:求不选修任何课程的学生的姓名解:{t|u∈学生(┑v∈选课(u[学号]=v[学号]∧t[姓名]=u[姓名]))}–2020年2月10日星期一25数据库系统概念----关系模型元组关系演算例:求选修了’98001’所选全部课程的学生的学号。解:{t|u∈选课(v∈选课(v[学号]=‘98001’→(w∈选课(w[学号]=u[学号]∧w[课程号]=v[课程号]∧t[学号]=u[学号])))}2020年2月10日星期一26数据库系统概念----关系模型元组关系演算例:从学生关系中删掉王欣。解:S={t|t∈学生∧t[姓名]=“王欣”}学生={t|t∈学生∧-t∈S}例:在学生关系中插入一个学生(98005,周明,20,外语)。解:S={(98005,周明,20,外语)}学生={t|t∈学生∨t∈S}2020年2月10日星期一27数据库系统概念----关系模型元组关系演算例3-29:将赵岩的年龄改为20岁。S={t|学生(t)∧t[姓名]=‘赵岩’}学生={t|t∈学生∧-t∈S}修改S中赵岩的年龄学生={t|t∈学生∧t∈S}2020年2月10日星期一28数据库系统概念----关系模型示例关系DEPT=(DNO,DNAME,DEAN)S=(SNO,SNAME,SSEX,SAGE,DNO)COURSE=(CNO,CNAME,PCNO,CREDIT)SC=(SNO,CNO,GRADE)PROF=(PNO,PNAME,PAGE,SAL,DNO)PC=(PNO,CNO)2020年2月10日星期一29数据库系统概念----关系模型元组关系演算示例:找出工资在800元以上的老师{t|tPROFt[SAL]800}–找出工资在800元以上的老师的姓名{t|sPROF(t[PNAME]s[PNAME]s[SAL]800)}–给出计算机系老师的姓名∏PNAME(DNAME=计算机系(DEPT)PROF){t|uDEPT(u[DNAME]=“计算机系”sPROF(s[DNO]=u[DNO]t[PNAME]s[PNAME]))}2020年2月10日星期一30数据库系统概念----关系模型元组关系演算示例–找出工资在800元以上的老师{t|tPROFt[SAL]800}–找出工资在800元以上的老师的姓名{t|sPROF(t[PNAME]s[PNAME]s[SAL]800)}2020年2月10日星期一31数据库系统概念----关系模型元组关系演算–给出计算机系老师的姓名∏PNAME(DNAME=计算机系(DEPT)PROF){t|uDEPT(u[DNAME]=“计算机系”sPROF(s[DNO]=u[DNO]t[PNAME]s[PNAME]))}2020年2月10日星期一32数据库系统概念----关系模型元组关系演算表达式的安全性–元组关系演算有可能会产生无限关系,这样的表达式是不安全的如{t|┑(tr)},求所有不在r中的元组–引入公式P的域概念,用dom(P)表示dom(P)=显式出现在P中的值+在P中出现的关系的元组中出现的值如dom(┑(tr))不是r中出现的所有值的集合–如果出现在表达式{t|P(t)}结果中的所有值均来自dom(P),则称{t|P(t)}是安全的2020年2月10日星期一33数据库系统概念----关系模型元组关系演算B2A1B3A2B1A1BAdom(┑(tr))={{A1,A2},{B1,B2,B3}}B1A2B2A2B3A1BAr{t|┑(tr)}
本文标题:数据库5版讲稿第五章----其它关系语言
链接地址:https://www.777doc.com/doc-3632280 .html