データベース復習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は空の
8.3関係代数データベースの変更
(1)削除
削除操作の形式化はr←r−Eと定義され、ここでrは関係インスタンスであり、Eは関係代数クエリ式である
(2)挿入
挿入操作の形式化はr←r∪Eと定義され、ここでrは関係インスタンスであり、Eは関係代数クエリ式または定数メタセットである
(3)更新
Projection操作で関係変数に値を付与する更新
CH 9関係演算
9.1関係演算
リレーショナル演算はSQL、リレーショナル代数以外のデータベース操作を記述する形式化言語であり、リレーショナル演算の基本操作オブジェクトは範囲変数(Range Variable、リレーショナル変数/テーブルの論理表現の別称)である.
リレーショナル演算の基本構文は次のとおりです.
特に注意しなければならないのは、ブール式を量子化することです. である. に等価である.
9.2ユニット演算
リレーションシップ演算では、メタグループ演算はメタグループに対する操作であり、簡単なメタグループ演算はSQLと非常に似ています.
複雑なメタグループ演算は、量子化ブール式を導入します.
9.3その他の操作
集約関数、集合操作などの関係演算の他の操作はSQLと似ています.
CH 8関係代数
8.1関係代数
リレーショナル代数はSQL以外のデータベース操作を記述する形式化言語であり、リレーショナル変数(テーブル)はリレーショナル代数の基本式である
関係代数の3つの重要な形式化の定義は以下の通りである.
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と似ています.