どのような状況で、タプル関係計算よりもドメイン関係計算を使用しますか?
列の値に対して同じ演算子にアクセスできると仮定すると、タプル関係計算、ドメイン述語計算、または関係代数の任意の式を他の式に変換できます。特定の状況でそれらのいずれかを使用できます。
タプル計算式
{ t < c,... > | ∃ u ∈ U : ... t.c ... u.x ...}
ドメイン計算式と同じセットを記述します
{ < c,... > | ∃ x,... : U(x,...) ∧ ... c ... x ...}.
"U" は与えられたリレーションに名前を付け、"u" はそこからの任意のタプルに名前を付け、"x,..." はその属性です。「U(x,...)」は原子式と呼ばれます。「∃」は量化詞と呼ばれ、「存在する」または「いくつかのために」を意味します。)
したがって、タプル計算をドメイン計算に変換するには:
- 結果にタプルの名前をドロップします。
- 量化されたタプル名と関係名を、その属性名の量化されたリストとそれらを使用する原子式に置き換えます。
- ドット付きタプル名をドロップします。
ドメイン計算をタプル計算に変換するには:
- 結果にタプルの名前を挿入します。
- すべての量化された属性リストが正確に 1 つの関係の属性を含み、その関係を持つ原子式がそれに続くように再配置します。
- リレーションの属性名の量化リストとそれらを使用する原子式を、新しい量化タプル名とリレーションの名前に置き換えます。
- 属性の前にドット付きタプル名を挿入します。
また、両者のセットの違いをどう表現しますか?
どちらの計算の式も、タプルのセットを記述します。セット差 A \ B は、セット A にはあるがセット B には含まれていないタプルのセットです。リレーション R が式 R のタプルを保持し、リレーション S が式S のタプルを保持する場合、R \ S = R MINUS S = タプル ここで式R ∧ ~式S .
(自然言語を介してクエリを構築し、ドメイン計算に変換してからリレーショナル代数に変換する方法については、こちらをお読みになると役立つ場合があります。これは、指定された各関係/テーブルの意味として、パラメーター化されたステートメントから始まります。次に、それらの組み合わせを見つけて表現します。与えられたクエリ. 次に、その式をドメイン計算のような短縮形に変換します. (そして、述語計算とも呼ばれる標準の述語ロジックのように.) リレーショナルタプル計算を取得するには、上記のようにドメイン計算をタプル計算に変換します. JOIN ON、CROSS JOIN、および "," はタプル計算によく似ていますが、JOIN USING と NATURAL JOIN はドメイン計算とタプル計算の混合のようなものです。)