关系数据库方法

4.1 关系数据库的基本概念

    4.1.1 关系的形式化定义

        1.关系的集合表示
            关系:元祖的集合。每个属性都有其相应的域(Domain)
            定义:域D1,D2,...,Dn上的关系(Ralation)就是笛卡尔积D1×D2×...×Dn的子集,用R(D1,D2,...,Dn)来表示,这里的R表示关系名,n称为关系的目(或者是度Degree),其中:R ⊆ D1×D2×...×Dn。关系成员为元祖,即(d1,d2,...,dn)。
            (1)关系的特点:
                    1)关系可以看做行和列交叉组成的二维表。它表示的是一个实体集。
                    2)一行为一个元祖,用于表示一个实体。
                    3)表中的列称为属性,每一列有且仅有一个属性名。
                    4)列的取值范围称为域。
                    5)表中任意两行不能相同(即不可出现重复元祖)。能唯一标识表中不同行的属性或属性组称为键。
            (2)关系的性质
                    1)属性为原子属性,不可分解。
                    2)不可以有重复的元祖
                    3)行序和列序无意义(有时候为了方便会添加列序)
            (3)键的种类
                    1)超键:在一个关系中,能唯一标识元祖的属性或属性集。
                    2)候选键:如果一个属性或属性集能够唯一标识元祖,而且又不含多余的属性。
                    3)主键:能够唯一标识元祖的属性或属性集中所选取的键。
                    4)外键:用于联系表与表之间的关系的键。
        2. 关系的一阶谓词表示
                        R={ t | P(t) },表示所有使谓词P为真的元祖t(其中t为个体变元)都属于关系R。
    
    4.1.2 关系模式、关系子模式和存储模式

        1. 关系模式:对关系的描述。形式:R(A1,A2,...,An)
        2. 关系子模式
        3. 存储模式

4.1.3 关系模型的完整性规则

        1.实体完整性规则
        2.参照完整性规则
        3.用户定义的完整性规则

4.2 关系代数

    4.2.1 关系代数的五个基本操作:选择σ、投影π、笛卡尔积×、并∪、差-。
        1.并运算:R∪S = {t | t ∈ R ∨ t ∈ S},t为元祖变量。
        2.差运算:R - S = {t | t ∈ R ∧ t ∉ S }
        3.笛卡尔积:R × S = { t | t = <t(n),t(m)>∧t(n)∈R∧t(m) ∈ S}(其中t(n)表示t有n个分量,t(m)也是一样)
        4.选择运算:σc(R) = { t | t ∈ R ∧ C[ t ] = True }(其中C为逻辑条件表达式)
            
C(逻辑条件表达式)的组成规则:
                ①α θ β 其中:α和β为属性名或常量,但不可以同时为常量。θ为比较运算符。(>,<,<=,>=,=,!=)。
                ②若干基本逻辑条件由∧、∨、非构成的复合逻辑条件。
        5.投影运算:πAi1,Ai2,...,Ain(R) = {t | t = < ti1 , ti2 , ... , tim > ∈ R }

  4.2.2 关系代数的组合操作
      
      1.交运算:R ∩ S = {t | t ∈ R ∧ t ∈ S },t是元祖变量
                      R ∩ S = R - (R - S)或 R ∩ S = S - (S - R)
      2.连接运算
        (1)条件连接:二目运算、又叫θ链接,用于将两个关系合并成一个关系。
                 
        (2)自然连接(Natural Join):二目运算,是θ连接的一种特例, 首要条件:它们必须有公共属性且值域必须相同。
                    R 自然连接 S = i1,i2,...im(σR.B1 = S.B1 ∧S.B2∧...∧R,Bn = S.Bn(R × S ))
        (3)半连接:(SemiJoin):R 半连接 S(R.A = S.B)= R(R 连接 S(R.A = S.B))
      
      3.除法运算(Division):条件:①R中包含S中的属性 ②R中有些属性不出现在S中。
                                                    T(Quotient) = R ÷ S
                                                    T中属性由R中不出现在S中的属性组成,其元祖则是S中所有元祖在R中对应的那些元祖值。
      
4.3 关系演算

    4.3.1 元祖关系演算:

        并:R ∪ S = {t | R(t)∨ S(t)}
        差:R - S = {t | R(t)∧ 非S(t)}
        选择:σF(R) = {t | R(t) ∧ F'},其中F'是条件表达式F的谓词演算表示形式。
        投影: i1,i2, ... ,ik(R) = {t(k)| (存在u)(R(u)∧ t[1] = u[i1] ∧ ... ∧t[k] = u[ik])}
        笛卡尔积:R × S = {t(r+s)|(存在u(t))(存在v(s)(R(u)∧S(v)∧ t[1] = u[1] ∧ ... ∧t[r] = u[r]∧t[r+1] = v[1]∧ ... ∧ t[r + s] = v[s])}

    4.3.2 域关系演算

4.4 关系查询优化

    4.4.1 查询优化的一般策略

        1)尽早地执行一目运算(如选择、投影)
        2)将先做笛卡尔积和选择结合起来,使之成为一个连接运算
        3)同时计算一串选择和投影运算,以免分开运算而多次扫描文件
        4)找出表达式中的公共子表达式
        5)适当的预处理
        6)将投影同前面的双目运算相结合。没有必要为了去掉一个或某几个属性而扫描一遍关系

    4.4.2 关系代数优化

        1.表达式的求值
        2.关系代数的等价变换规则
            (1)连接和笛卡尔积的交换律
                    E1 连接(F条件表达式) E2 = E2 连接(F条件表达式) E1
                    E1 连接 E2 = E2 连接 E1
                    E1 × E2 = E2 × E1
            (2)连接和笛卡尔积的结合律
                    (E1 连接(F1)E2) 连接(F2)E3 = E1 连接(F1)( E2 连接(F2)E3)
                    E1 连接 E2) 连接 E3 = E1 连接( E2 连接 E3)
                    (E1 × E2) × E3 = E1 × (E2 × E3)
            (3)投影的串接                
                    设L1,L2, ... ,Ln 为属性集,并且L1 ⊆  L2 ⊆  ... ⊆  Ln,则下式成立:
                             L1( L2(...( Ln(E)))) = L1 (E)
             (4)选择的串接
                    σF1(σF2(E)) = σF1F2(E)
             (5)选择与投影的交换
                    如果条件F仅涉及属性A1,...,An,则下式成立:
                         A1,...,An(σF(E)) = σF( A1,...,An(E))
                    更一般地,如果条件F涉及不在A1, ... ,An 中出现的B1, ... ,Bm,那么下式成立:
                          A1,...,An(σF(E)) =   A1,...,An(σF( A1,...,An(E)))
             (6)将选择移入笛卡尔积
                    σF(E1 × E2) = σF(E1)× E2    (F涉及的属性都在E1中)
                    σF(E1 × E2) = σF(E1) ×σF(E2)    (F = F1 ∧ F2,F1 涉及 E1,F2 涉及 E2
                    σF(E1 × E2)= σF2(σF1(E1)× E2)    (F = F1 ∧ F2,F1 涉及 E1,F2 涉及 E1和E2
            (7)选择与并运算交换
                    如果有表达式 E = E1 ∪ E2,设在E1中出现的属性名与E2相同,下式成立:
                        σF(E1 E2) = σF(E1) σF(E2)
            (8)选择与差运算交换
                         σF(E1 - E2)= σF(E1)- σF(E2) (E1和E2具有相同的属性名)
            (9)投影移入笛卡尔积
                    设A1, ... ,An是E中所出现的属性,而B1, .... ,Bm是E2中所出现的。下式成立:
                         A1,...,An,B1, ... ,Bn(E1 ∪ E2) =  A1,...,An(E1) ×  B1,...,Bn(E2)
             (10)投影移入并运算
                         A1,...,An(E1 ∪ E2) =  A1,...,An(E1) ∪  A1,...,An(E2)
        3.代数优化算法

猜你喜欢

转载自blog.csdn.net/qq_39316701/article/details/80160481