データベース復習9——関係代数と関係演算


データベースの復習
CH 8関係代数
8.1関係代数
リレーショナル代数はSQL以外のデータベース操作を記述する形式化言語であり、リレーショナル変数(テーブル)はリレーショナル代数の基本式である
関係代数の3つの重要な形式化の定義は以下の通りである.
  • σF(E):E 1つの式(基本式または式の中間結果)、FはEの属性に関する断言であり、where従文制限条件(Restrict操作)
  • に相当する.
  • ΠA(E):E式.AはE属性のサブセットであり、select従文(Projection操作)
  • に相当する.
  • ρX(E):E式で、XはE式の結果の名前を
  • に変更します.
    8.2関係代数オペレータ
    (1)基本演算子
    F断言には、論理演算子(∧、∧、∨、∧)および関係演算子(=,>,<,≧,≦,≠)があり得る
    集合演算子(並列、交差、差、デカルト積):×
    左矢印←割り当て操作
    (2)Join操作
    関係モードR(A,B,C,D)およびS(E,B,D)を定義するインスタンスr,sの自然接続は、以下のようになる.
    r⋈s=Πr.A,r.B,r.C,r.D,s.E(ρr.B=s.B∧r.D=s.D(r×s))
    (3)除算操作
    関係パターンR(A 1,...,Am,B 1,...,Bn)およびS(B 1,...,Bn)を定義する例r,sの除算結果(商)は、
    R−S={A1,...,Am}r÷s={t|t∈ΠR−S(r)∧∀u∈s(tu∈r)}
    完全な関係代数では、次のように表されます.
    r÷s=ΠR−S(r)−ΠR−S(ΠR−S(r)×s−ΠR−S,S(r))
    (4)集約操作
    SQLなどの集約関数定義は、avg、min、max、sum、countなどを含み、形式化された関係代数集約操作は以下のようになる.
    G1,G2,...,GngF1(A1),...,Fm(Am)(E)
    そのうちG 1,G 2,...,Gnは空のgroup byであり、Fiは属性Aiに作用する集約関数である
    8.3関係代数データベースの変更
    (1)削除
    削除操作の形式化はr←r−Eと定義され、ここでrは関係インスタンスであり、Eは関係代数クエリ式である
    (2)挿入
    挿入操作の形式化はr←r∪Eと定義され、ここでrは関係インスタンスであり、Eは関係代数クエリ式または定数メタセットである
    (3)更新
    Projection操作で関係変数に値を付与する更新
    CH 9関係演算
    9.1関係演算
    リレーショナル演算はSQL、リレーショナル代数以外のデータベース操作を記述する形式化言語であり、リレーショナル演算の基本操作オブジェクトは範囲変数(Range Variable、リレーショナル変数/テーブルの論理表現の別称)である.
    リレーショナル演算の基本構文は次のとおりです.
    1.      
    <Range var definition>::= 
    RANGEVAR <range var name> RANGES OVER <relational exp commlist>
    
    2.      
    <range attr reference>::= 
    <range var name>.<attr reference> [ AS <atrr name> ]
    
    3.     
    <boolean exp>::= ... all the usual possibilities, together with: | <quantified boolean exp>
    
    4.       (     )
    <quantified boolean exp>::= 
    EXISTS <range var name>(<boolean exp>)| 
    FORALL <range var name>(boolean exp>)
    
    5.    
    <relational operation>::= <proto tuple>[WHERE <boolean exp>]
    
    6.     
    <proto tuple> ::= <tuple exp>
    

    特に注意しなければならないのは、ブール式を量子化することです.
  • EXISTS v(P(v))は、1つのP(v)が真である限り、すなわち真
  • である.
  • FORALL v(P(v))すべてのP(v)を真とする必要があります.
  • FORALL v(P(v))NOT EXISTS v(NOT P(v))
  • に等価である.
    9.2ユニット演算
    リレーションシップ演算では、メタグループ演算はメタグループに対する操作であり、簡単なメタグループ演算はSQLと非常に似ています.
    // Find supplier numbers and status for suppliers in Paris with status >20
    
    // Define a range variable
    RANGEVAR sx RANGES OVER S;
    
    // Where clause implement Restriction&Projection
    (sx.s#, sx.status) WHERE sx.city='paris' AND sx.status>20
    

    複雑なメタグループ演算は、量子化ブール式を導入します.
    // Find supplier names for suppliers who supply all parts.
    
    sx.sname WHERE FORALL px(EXISTS spx(spx.s# = sx.s# AND spx.p# = px.p#))
    

    9.3その他の操作
    集約関数、集合操作などの関係演算の他の操作はSQLと似ています.