您的位置:首页 > 数据库

数据库系统概论——03——关系代数

2017-02-28 23:39 211 查看
关系:一个扁平二维表。N个集合的笛卡尔积集合的子集。

每一行为一个元组,每一列为一个属性。关系模型为数据库表的表头。

主键(码):选一个候选码作为身份区别。

超码:一个关系中,能够标识一个元组的属性。

候选码:一个关系中,能够标识一个元组,最小属性集合。可能有多个,基于用户的使用环境。

null值与其他值比较时,其结果为null(null表示不确定)。

3  in {1,2,null}  结果为null。

关系性的完整性约束机制:1.主码属性不能为空  2.外码取值受限制(取值为参照的表的值,或为空)3.域完整性是针对某一具体关系数据库的约束条件,它保证表中某些列不能输入无效的值。4.用户定义的完整性

它是一种抽象的查询语言,用对关系的运算来表达查询。

关系代数用到的运算符包括传统的运算符和专门的关系运算符两类。

传统的集合运算有  并,差,交  和 笛卡尔积4个,都为双目运算符。

专门的关系运算符有选择,投影,连接和除4个,选择和投影是单目运算符,连接和除是双目运算符。

传统的关系运算符:

1.并(UNION) 设有两个关系R和S,它们具有相同的结构(属于同一个域)。R和S的并是由属于R或属于S的元组组成的集合,运算符为∪。记为T=R∪S。

2.差(DIFFERENCE) R和S的差是由属于R但不属于S的元组组成的集合,运算符为-。记为T=R-S。

3.交(INTERSECTION) R和S的交是由既属于R又属于S的元组组成的集合,运算符为∩。记为T=R∩S。 R∩S=R-(R-S)。

4.笛卡尔积 X,两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。

元组的前n列为R的一个元组,元组的后m列为关系S的一个元组。 若R有k1个元组,S有k2个元组,则关系R和关系S的笛卡尔积有k1 x k2个元组。

选择运算: (类似6)选取某些符合条件的元组。

投影:(类似π)选取某些符合条件的列。

Join操作:在某些条件下   R连接S,R中的每一个元组 与S中的每一个元组做笛卡尔积,满足条件的元组留下来,两个表的列并在一起。

Natural join:R连接S,R中的每一个元组 与S中的每一个元组做笛卡尔积,相同的列取值相同的被留下,其余的被删除,两个表的列并在一起。

左外连接:左边全部的信息会被留下,类似Natural Join。

象集:一个关系R(X , Z),X的值为某个值时,Z的值对应的集合。

除:元组在x上分量值x的象集Yx包含S在Y上投影的集合。一定是象集Yx含有每一个S在y上投影的集合,结果只有分量值x。并且包含象集Yx的元组对应的X应完全相同。

专门的关系运算符:

1.选择运算

从关系中找出满足给定条件的那些元组称为选择。其中的条件是以逻辑表达式给出的,值为真的元组将被选取。这种运算是从水平方向抽取元组。 在FOXPRO中的短语FOR和WHILE均相当于选择运算

如:LIST FOR 出版单位='高等教育出版社' AND 单价<=20

2.投影运算

从关系模式中挑选若干属性组成新的关系称为投影。这是从列的角度进行的运算,相当于对关系进行垂直分解。在FOXPRO中短语FIELDS相当于投影运算。 如: LIST FIELDS 单位,姓名

3.连接运算

连接运算是从两个关系的笛卡尔积中选择属性间满足一定条件的元组。

4.、除法运算

在关系代数中,除法运算可理解为笛卡尔积的逆运算。

设被除关系R为m元关系,除关系S为n元关系,那么它们的商为m-n元关系,记为R÷S。商的构成原则是:将被除关系R中的m-n列,按其值分成若干组,检查每一组的n列值的集合是否包含除关系S,若包含则取m-n列的值作为商的一个元组,否则不取。

设关系模式为 R(A1,A2,,,An) , 它的一个关系设为R,t属于R表示t是R的一个元组(通俗些也就是一行数据)。t[Ai] 表示元组t中相应属性Ai的一个分量。

象集的本质是一次选择运算和一次投影运算。

例如关系模式R(X, Z),X和Z表示互为补集的两个属性集,对于遵循模式R的某个关系A,

当t[X]=x时,x在R中的象集(Images Set)为:

Zx={ t[Z] | t ∈ R,t[X]=x }

它表示:其实就是所有值等于x的元组(或记录),然后在Z上的投影。

------象集的本质是一次选择运算和一次投影运算。

(R中X分量等于x的元组集合在属性集Z上的投影)。

如R:

X Y Z

a1 b1 c2

a2 b3 c7

a3 b4 c6

a1 b2 c3

a4 b6 c6

a2 b2 c3

a1 b2 c1

在关系R中,X可以取四个值{a1,a2,a3,a4}

a1在R中的象集为{(b1,c2),(b2,c3),(b2,c1)}

a2在R中的象集为{(b3,c7), (b2,c3)}

a3在R中的象集为{(b4,c6)}
a4在R中的象集为{(b6,c6}

1.选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。

2.投影运算是从R中选择出若干列组成新的列。这是从列的角度进行的运算。

3.连接运算从两个关系的笛卡尔积中选取属性间满足一定条件的元组,比如,从R到S的笛卡尔积 R x S 中选取R关系中在A属性组上的值与S关系中在B属性组上值满足比较关系。
连接分为等值连接和自然连接。

等值连接,它是从关系R与S的笛卡尔积中选取A , B属性值相等的那些元组。是从行的角度进行的。自然连接,是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性去掉。是同时从行的角度和列的角度进行的。

4.除 给定关系R(X,Y) 和S(Y,Z) ,其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须有相同的值域。R与S的除运算得到一个新的关系P(X),该P中只包含R中投影下来的X属性组,并且该属性组X应该满足:  R(Y)=S(Y);

关系的查询处理:

查询处理是关系数据库管理系统执行查询语句的过程。

查询处理可以分为4个阶段:查询分析,查询检查,查询优化和查询执行。

查询分析检查语法错误。查询检查进行语义检查,即相应的操作对象是否存在,是否违背完整性约束等。

查询优化是选择一个高效执行的查询处理策略。

查询执行是根据优化器得到的处理策略生成查询执行计划,由代码生成器生成某个查询计划的代码,然后执行。

最佳实践:

如果在关系代数中需要做连接操作,则应使用自然连接,而不是笛卡尔积运算。

能在自然连接前使用选择减少数据,则先执行选择,后连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: