码迷,mamicode.com
首页 > 数据库 > 详细

数据库学习摘记 —— 关系代数和关系演算

时间:2020-03-21 18:08:14      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:学生   epo   str   变量   方法   方案   键值   英语   course   

关系数据结构

笛卡儿积:给定一组集合D1,D2,…,Dn,这些集合可以相同, 定义D1,D2,…,Dn 的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn) | di?Di,i=l,2,…,n},其中的每一个元素(d1,d2,…,dn)叫做一个n元组,元素中第i个值di叫做第i个分量。

关系:笛卡尔积D1×D2×…×Dn的任一个子集称为 D1,D2,…,Dn 上的一个关系。关系是元组的集合,亦即实 体的集合。

域:集合 D1,D2,…,Dn是关系中元组的取值范围,称为关系的域。关系中的每一列对应一个域,也称为关系的属性,不同的列可以有相同的域,列名对应域名,即属性名。

度:集合 D1,D2,…,Dn的n为关系的度。

候选键:能唯一地标识出一个元组的属性或属性组。

联合键:两个或两个以上属性组成的候选键。

全键:关系的全部属性构成关系的唯一候选键。该关系称为全键关系(All-Key Relation)

主键:在关系的多个候选键中选择的一个候选键,用它作为元组的唯一标示。在一个关系中只能有一个主键。

外键:关系R中的一组属性A不是关系R的主键,但A是另一个关系S的主键,则属性组A就是关系R的外键。

关系模式:若U={A1, A2 …, An}为关系R的属性集,则关系模式简记为R(U)或R(A1, A2, …, An)

? ?

完整性规则

实体完整性规则:关系中每个元组的主键属性对应的各个分量不能为空值。

参照完整性规则:设属性组A是关系R的外键且A又是关系S的主键,则对于R中的每一个元组在属性A上的值必须为:空值或者等于S中某一个元组的主键值。

实体完整性和参照完整性都是关系模型必须满足的完整性约束条件,这些约束条件由RDBMS自动支持。

用户定义的完整性:用户根据具体应用而对数据附加的约束条件。

? ?

关系代数中传统的集合运算

关系R与S是相容的: 若关系R和S满足:R和S具有相同的度;R中的第i个属性和S中的第i个属性定义在同一个域上。

并运算: R∪S;差运算:R-S;交运算:R∩S

广义笛卡尔积:设R为m元关系,S为n元关 系,则R与S的广义笛卡尔积R×S是一个(m+n) 元关系,其中的每个元组的前m个分量是R中的一个元组,后n个分量是S中的一个元组。若R有k1个元组,S有k2个元组,则R×S有(k1×k2)个元组,即广义笛卡尔积。

关系代数中专门的集合运算

选择运算:从关系Students中选取所有的男生。

其关系运算表达式为:σSsex=‘男‘(Students)

投影运算:选取学生关系Sudents中的所有Sname(姓名),Sage(年龄)和Class(班级)。

其关系运算表达式为:∏Sname, Sage, Class(Students)

连接运算:θ为算术比较符,从二个关系的广义笛卡尔 积中选取满足一定连接条件的元组。

技术图片技术图片

自然连接:两个关系进行连接比较的属性列完全相同的等值连接,且结果关系中没有重复的属性。

R 技术图片S=ΠB(σR.A=S.A(R×S)),B=ARUAS

除法运算:

T=Π1,2,…,n-m(R)

W=(T×S)-R????(计算T×S中不在R中的元组)

V=Π1,2,…,n-m(W)

R÷S=T-V

【查询选修了‘英语‘ 课程的学生姓名】

技术图片

【检索选修了所有课程的学生编号和姓名】

技术图片技术图片

SELECT Sname,Sno

FROM Students WHERE NOT EXISTS

(SELECT * FROM Courses WHERE NOT EXISTS

(SELECT * FROM Reports WHERE

SNO=Students.Sno AND Cno=Course.Cno))

元组关系演算

表达式的一般形式为{ t | α(t)},它是使α(t)为真的所有元组t构成的集合。其中,t是元组变量,α(t)是元组关系演算公式(简称公式),它由原子公式和运算符组成。

S-学生表、R-成绩表、C-课程表

【检索班级编号为‘199902‘的全班学生的学号】

{t[1] | S(t)t[5]=‘199902‘}

【查询选修了‘英语‘ 课程的学生姓名】

{t[2] | S(t)ヨu(R(u)u[1]= t[1]ヨv(C(v)v[1]=u[2]v[2]=‘英语‘))}

{t[2] | S(t)ヨuヨv (R(u)C(v)u[1]= t[1]v[1]=u[2]v[2]=‘英语‘)}

【检索选修了所有课程的学生】

{t | S(t)?v(C(v)ヨu(R(u)u[2]=v[1]u[1]=t[1]))}

域关系演算

【检索班级编号为‘199902‘的全班学生的学号】

{t1 | S(t1, t2, t3, t4, t5)t5=‘199902‘}}

【查询选修了‘英语‘课程的学生名】

{t2 | S(t1, t2, t3, t4, t5)ヨu1ヨu2ヨv1ヨv2(R(u1, u2, u3)C(v1, v2,v3)t1=u1u2=v1v2=‘英语‘)}

【检索选修了所有课的学生】

{(t1, t2, t3, t4, t5) | S(t1, t2, t3, t4, t5)ヨv1ヨu1ヨu2(R(u1, u2, u3)C(v1, v2, v3)u2=v1u1=t1)}

关系运算的安全限制

无限关系:当元组变元t中某一属性的定义域是无限时,如表示所有不在关系R中的元组的集合{t | ┐R(t)}。

无穷验证过程:t的取值范围为无限,如验证(?t)(ω(t))为真的过程。

安全表达式:不产生无限关系和无穷验证过程的表达式。

安全限制:为保证所有表达式都是安全表达式所采取的限制措施。

关系代数运算是安全的:当给定的所有关系是有限时,其运算的有限次复合不会出现无限关系和无穷验证。

等价:关系代数、安全的元组关系演算和安全的域关系演算的表达能力是等价的,可以相互转换。

安全限制方法:

定义一个ψ的有限符号集合,记作DOM(ψ)(不必是最小集合),它由以下两类符号构成:

ψ中的常量符号;

ψ中涉及的所有关系的所有元组的各个分量值。

这样,把{t | ┐R(t)}和(?t)(ω(t))中的t都全部限制在DOM(ψ)中取值,就不会出现无限关系和无穷验证过程,这时关系演算是安全的。

【关系R如右,求元组演算表达式S={t | ┐R(t)}】

令DOM(ψ)=∏A(R)∪∏B(R)∪∏C(R)={a, b, 1, 3, 7, 8},则结果关系:

技术图片

S={ t | ┐R(t)}=DOM(ψ)×DOM(ψ)×DOM(ψ)-R。因此,由于有DOM(ψ)的安全限制,关系S中有216-2=214 个元组,故是有限的。

查询优化

途径:

代数优化:对查询语句进行变换,只改变其基本操作顺序提高查询效率,但不涉及存取路径。

物理优化:根据系统提供的存取路径,比如顺序或索引等来选取较好查询方案。

规则优化:根据一些启发式规则,如先做选择、投影,再做连接操作等来选择较好的查询方案。

代价优化:在规则基础上,对所提供的查询方案进行执行代价估算,选择代价最小的查询方案。

执行代价:

在集中式数据库中,查询的执行代价为:总代价=I/O代价+CPU代价

在多用户环境下查询的执行代价为:总代价=I/O代价+CPU代价+内存代价

查询优化策略(启发式规则):

选择运算应尽早执行

把投影运算和选择运算同时进行

把投影操作与它前面或后面的一个双目运算结合起来

在执行连接运算之前,可对需要连接的关系进行适当地预处理,如建索引或排序

把笛卡尔乘积和其后的选择运算合并成为连接运算

存储公用子表达式

查询优化的等价公式:

  • 笛卡儿积、自然连接和条件连接都满足交换律和结合律
  • 投影运算的串接:技术图片
  • 选择运算的串接:技术图片
  • 选择运算与投影运算交换:技术图片
  • 选择运算与笛卡尔积交换:

设F中涉及的属性都是E1的属性:

技术图片

如果F=F1F2,且F1只涉及E1的属性,F2只涉及E2的属性:技术图片

如果F= F1F2 ,且F1只涉及E1的属性,F2涉及E1和E2两者的属性:技术图片

投影运算与笛卡尔积交换:

设E1、E2是两个关系代数表达式,A1,A2,…,An是E1的属性,B1,B2,…,Bm是E2的属性技术图片

查询优化的步骤:

  • 把查询要求转换成某种内部表示 ;

如关系代数语法树;

  • 把语法树转换成某种优化形式;

利用关系代数等价公式的优化算法

  • 选择低层的存取路径;

查询优化器根据数据字典获得当前数据库

  • 状态的信息

生成多个查询计划,选择代价最小的去完成查询任务。

技术图片

技术图片

?技术图片

技术图片

技术图片

?技术图片

技术图片

?技术图片

?技术图片

数据库学习摘记 —— 关系代数和关系演算

标签:学生   epo   str   变量   方法   方案   键值   英语   course   

原文地址:https://www.cnblogs.com/kuluo/p/12540253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!