数据库系统概论——关系代数详解

07-21 1287阅读

文章目录

  • 1、关系代数概述
      • 1.1 传统的集合运算
      • 1.2 专门的关系运算
        • 1.2.1 选择运算
        • 1.2.2 投影(Projection)
        • 1.2.3 连接(Join)
        • 1.2.4 两类常用连接运算
        • 1.2.5 除(Division)

          1、关系代数概述

          关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是利用对关系的运算来表达查询的。

          任何运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。

          关系代数的运算对象是关系,运算结果亦为关系。

          在关系代数运算中,有5种基本运算,它们是并(U)、差(—)、投影、选择、笛卡尔积(X),其它运算即交、连接和除,均可通过5种基本的运算来表达 。

          运算符:

          • 集合运算符
            • 将关系看成元组的集合
            • 从关系的“水平”方向即行的角度来进行运算
            • 专门的关系运算符
              • 不仅涉及行而且涉及列
              • 算术比较符
                • 辅助专门的关系运算符进行操作
                • 逻辑运算符
                  • 辅助专门的关系运算符进行操作

                    常见的关系运算符如下:

                    数据库系统概论——关系代数详解

                    1.1 传统的集合运算

                    设关系 R R R和关系 S S S是相容的, t t t代表元组变量,现将各种运算分别介绍如下:

                    (1)并(Union)

                    • 关系 R R R与关系 S S S的并记作: R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R∪S=\{t|t∈R∨t∈S \} R∪S={t∣t∈R∨t∈S}
                    • 结果关系是由属于 R R R或属于 S S S的元组组成,且结果仍为 n n n目关系,但结果关系要消除重复元组。

                      举例:

                      R R R和 S S S

                      • 具有相同的目 n n n(即两个关系都有n个属性)
                      • 相应的属性取自同一个域

                        R ∪ S R∪S R∪S

                        • 仍为 n n n目关系,由属于 R R R或属于 S S S的元组组成
                          • R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R∪S=\{t|t∈R∨t∈S \} R∪S={t∣t∈R∨t∈S}

                            具体如下图所示:

                            数据库系统概论——关系代数详解

                            (2)交( Intersection)

                            • 关系 R R R与关系 S S S的交记作: R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R∩S=\{t|t∈R∧t∈S \} R∩S={t∣t∈R∧t∈S}
                            • 结果关系由既属于 R R R又属于 S S S的元组组成,且仍为 n n n目关系。

                              举例:

                              R R R和 S S S

                              • 具有相同的目 n n n
                              • 相应的属性取自同一个域

                                R ∩ S R∩S R∩S

                                • 仍为 n n n目关系,由既属于 R R R又属于 S S S的元组组成
                                  • R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R∩S=\{t|t∈R∧t∈S \} R∩S={t∣t∈R∧t∈S}

                                    具体如下图所示:

                                    数据库系统概论——关系代数详解

                                    (3)差(Difference)

                                    • 关系R与关系S的差记作: R − S = { t ∣ t ∈ R ∧ t ∉ S } R-S=\{t|t∈R ∧t \notin S\} R−S={t∣t∈R∧t∈/S}
                                    • R R R和 S S S的差,结果关系由属于 R R R而不属于 S S S的所有元组组成,且仍为 n n n目关系,即在关系 R R R中减去 R R R和 S S S的相同元组。

                                      举例:

                                      R R R和 S S S

                                      • 具有相同的目 n n n
                                      • 相应的属性取自同一个域

                                        R − S R - S R−S

                                        • 仍为 n n n目关系,由属于 R R R而不属于 S S S的所有元组组成
                                          • R − S = { t ∣ t ∈ R ∧ t ∉ S } R-S=\{t|t∈R ∧t \notin S\} R−S={t∣t∈R∧t∈/S}

                                            数据库系统概论——关系代数详解

                                            (4)广义笛卡尔积(Extended Cartesian Product)

                                            • 两个分别为 n n n目和 m m m目的关系, R R R和 S S S的广义笛卡尔积是一个 ( n + m ) (n+m) (n+m)列的元组的集合。
                                            • 元组的前 n n n列是关系 R R R的一个元组,后 m m m列是关系 S S S的一个元组。若 R R R有 k 1 k_1 k1​个元组, S S S有 k 2 k_2 k2​个元组,则关系 R R R和关系 S S S的广义笛卡尔积有 k 1 × k 2 k_1×k_2 k1​×k2​个元组。
                                            • 记作: R × S = { ( a 1 , a 2 , … a m , b 1 , b 2 , … b n ) ∣ ( a 1 , a 2 , … a m ) ∈ R ∧ ( b 1 , b 2 , … b n ) ∈ S } 。 R×S=\{(a_1,a_2,…a_m,b_1,b_2,…b_n)| (a_1,a_2,…a_m) ∈R ∧ (b_1,b_2,…b_n) ∈ S\}。 R×S={(a1​,a2​,…am​,b1​,b2​,…bn​)∣(a1​,a2​,…am​)∈R∧(b1​,b2​,…bn​)∈S}。

                                              严格地讲应该是广义的笛卡尔积

                                              • R R R: n n n目关系, k 1 k_1 k1​个元组
                                              • S S S: m m m目关系, k 2 k_2 k2​个元组

                                                R × S R×S R×S

                                                • 列: m + n m+n m+n列元组的集合

                                                  • 元组的前 n n n列是关系 R R R的一个元组
                                                  • 后 m m m列是关系 S S S的一个元组
                                                  • 行: k 1 × k 2 k_1×k_2 k1​×k2​个元组

                                                    数据库系统概论——关系代数详解

                                                    具体如下图所示:

                                                    数据库系统概论——关系代数详解

                                                    1.2 专门的关系运算

                                                    在讲解之前,我们先引入几个记号,这样有助于下面的理解,确实关系代数后半部分有点难理解。

                                                    (1) R , t ∈ R , t [ A i ] R,t\in R,t[A_i] R,t∈R,t[Ai​]

                                                    设关系模式为 R ( A 1 , A 2 , … , A n ) R(A_1,A_2,…,A_n) R(A1​,A2​,…,An​),它的一个关系设为 R R R, t ∈ R t\in R t∈R表示 t t t是 R R R的一个元组, t [ A i ] t[A_i] t[Ai​]则表示元组t中相应于属性 A i A_i Ai​的一个分量。

                                                    (2) t r t s ⏞ \overbrace{t_rt_s} tr​ts​ ​ , R R R为 n n n目关系, S S S为 m m m目关系。

                                                    t r ∈ R , t s ∈ S , t r t s ⏞ t_r\in R,t_s\in S, \overbrace{t_r t_s} tr​∈R,ts​∈S,tr​ts​ ​称为元组的连接。 t r t s ⏞ \overbrace{t_r t_s} tr​ts​ ​是一个 n + m n + m n+m列的元组,前 n n n个分量为 R R R中的一个 n n n元组,后 m m m个分量为 S S S中的一个 m m m元组。

                                                    (3)象集 Z x Z_x Zx​

                                                    给定一个关系 R ( X , Z ) R(X,Z) R(X,Z), X X X和 Z Z Z为属性组。当 t [ X ] = x t[X]=x t[X]=x时, x x x在 R R R中的象集(Images Set)为:

                                                    Z x = t [ Z ] ∣ t ∈ R , t [ X ] = x Z_x={t[Z]|t \in R,t[X]=x} Zx​=t[Z]∣t∈R,t[X]=x

                                                    它表示 R R R中属性组 X X X上值为 x x x的诸元组在 Z Z Z上分量的集合。

                                                    举例如下:

                                                    数据库系统概论——关系代数详解

                                                    上面抽象的例子可能并不是特别容易理解,那么我们就拿生活中的实际例子进行解释:

                                                    学生-课程-选修关系:

                                                    学生关系Student、课程关系Course和选修关系SC

                                                    数据库系统概论——关系代数详解

                                                    在上面的关系表中,我们可以把SC表看作一个关系R,它的属性组为学号,课程号以及成绩,即 R ( S n o , C n o , G r a d e ) R(Sno, Cno, Grade) R(Sno,Cno,Grade)。这时我们将SC表与上面那个例子对比可以看出,Sno为200215121的学号在关系R(SC表)中的象集为 S n o 200215121 = { 1 , 2 , 3 } Sno_{200215121}=\{1,2,3\} Sno200215121​={1,2,3},以此类推,这样就比较容易理解一点。

                                                    1.2.1 选择运算
                                                    • 选择又称为限制
                                                    • 选择运算符的含义
                                                      • 关系R上的选择操作是根据某些条件对关系R做水平分割,即从行的角度选择符合条件的元组。
                                                      • 在关系R中选择满足给定条件的诸元组
                                                        • 记作: σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ‘真’ } σF(R)=\{t|t∈R∧F(t)=‘真’\} σF(R)={t∣t∈R∧F(t)=‘真’}
                                                        • F:选择条件,是一个逻辑表达式,取逻辑值“真”或“假”。
                                                        • 选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算

                                                          数据库系统概论——关系代数详解

                                                          F:选择条件,是一个逻辑表达式

                                                          • 基本形式为: X 1 θ Y 1 X_1θY_1 X1​θY1​
                                                          • θ θ θ:比较运算符 (>, ≥ ,<, ≤ ,=或 ) (>,≥,<,≤,=或) (>,≥,<,≤,=或)
                                                          • X 1 , Y 1 X_1,Y_1 X1​,Y1​:属性名、常量、简单函数.
                                                          • 属性名也可以用它的序号来代替;

                                                            以最上面的学生-课程-选修关系表举例说明更好理解:

                                                            [例1] 查询信息系(IS系)全体学生

                                                            σ S d e p t = ′ I S ′ ( S t u d e n t ) 或 σ 5 = ′ I S ′ ( S t u d e n t ) σ_{Sdept} = 'IS' (Student) 或 σ_5 ='IS'(Student) σSdept​=′IS′(Student)或σ5​=′IS′(Student)

                                                            结果:

                                                            数据库系统概论——关系代数详解

                                                            [例2] 查询年龄小于20岁的学生

                                                            σ S a g e

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]