データベース関係代数
記事のディレクトリ
1.関係代数の操作
1.1従来の関係演算
従来の関係演算は数学的な集合論に端を発しており、次のタイプがあります。
- デカルト積の操作
- 差分演算
- 交差点操作
- そして操作
1.2特殊な関係演算
- 選択する
- 投影
- 接続
- 除算演算
1.2.1関係演算の基本概念
関係代数を学習するときは、常に頭の中にテーブルといくつかのテーブルパラメータが必要です。このテーブルは次のとおりです。
たとえば、私たち一人一人がトランスクリプトを見たことがあります。次の比喩を覚えておいてください。
-
Rはトランスクリプト全体です
-
R [A 1、A 2、A 3、…A i ] = R [言語、英語、数学…科目]
-
t
同級生の場合 -
t [A i ]は、特定のクラスメートの特定のグレードと見なすことができます
-
A
単一の属性ではなくなり、A
1つ以上の属性を表すことができます -
t[A]
それは、もはや単一の属性コンポーネントません。としてA
多くの属性t[A]
が表すよう、それは多くの属性要素として表現することができます。
- 比喩を作るために、
A
それはもはや単一の主題ではありませんが、1つ以上の科学の主題を表すことができます t[A]
Aが表す科目の数に応じて、特定のクラスメートの1つのグレードではなく、特定のクラスメートの複数のグレードと見なされます。A
(頭の上の水平線...)は、Aで表される分野を除くすべての分野を表します
1.2.2タプルの接続
このタプルは連結によって取得されます。最初のm個のコンポーネントはRテーブルのmタプルであり、最後のn個のコンポーネントはSテーブルのmタプルです。
1.2.3画像セット(除算演算の重要なツール)
彼は私たちの関係を与えたR(X,Y)
、X
とY
ある属性の集合を表し、X
およびY
すべてのプロパティの数が多列にあります
- 上記の比喩から、それ
X
は単一のコースまたは複数のコースのグレードであり、Y
1つのグレードまたは複数のグレードのコースでもあります。 - 場合
t[X] = x
:時間x
にR
画像設定されている:Y X = {T [Y]は| TはR、Tに属する[X] = X } - 式は理解しにくいですが、概念自体は非常に単純です
次の例では:
X- 1でのy
画像は、すべてのX-のプロパティコンポーネントに設定されている1。 Y上のコンポーネントのプロパティセットに対応する、すなわちY1,Y2,Y4
画像セットX 2 Y属性コンポーネントにはYであり、2
画像セットX 4 Y属性コンポーネントにはYであり、3
1.3数学演算
1.3.1和集合演算
和集合演算を使用できるようにするための2つの前提条件:
- 2つのテーブルの要素は同じです(2つのテーブルの列数は同じです)
- 同じドメインから同じ属性が取得されます(属性は同じです)
図に示すように、マージ後、2つの元のテーブルは、マージ後の新しいテーブルと同じ数の要素(同じ数の列)を持ち、2つのテーブル間に重複がある場合は、連結によって重複排除が行われます。重複処理。セット間の結合に似ています。
1.3.2差分演算
和集合演算と同様に、差分演算が使用できることを前提としています。
- 2つのテーブルの列数は同じです
- 両方のテーブルの属性は同じです
2つのテーブルの違いはまだn列です
S-R
テーブル:テーブルS表
内のタプルがR表
同じである場合は、S表
このタプルを削除します
R-S
テーブル:テーブルR表
内のタプルがS表
同じである場合は、R表
このタプルを削除します
要するに、それはただの時計です。私は別の時計が嫌いです。私はあなたのようなものを持っています。私はそれを変えることはできません!
1.3.3交差操作
交差操作が使用できるという前提は、前の2つの操作と同じです。
- テーブルの列数は同じです
- テーブルの属性はすべて同じです
2つのテーブルの連結は、2つのテーブル内の同じ要素を見つけ、 2つのテーブル間の共通点を見つけることです。
1.3.4デカルト積
ユニバーサルコンピューティングに制限はありません。
R表
:n元
関係、k1
タプル(k1行,n列
)
S表
:m元
関係、k2
タプル(k2行,m列
)
R表
そしてS表
デカルト積を実行します
GET (m + n)元
、k1 * k2
テーブルの新しい列は、次の通り:
2つのテーブルのデカルト積の後
上記はすべての数学的な関係代数演算です
1.4関係演算
関係代数の研究全体では、学生コース選択データベースを使用する必要があり、次の表に精通している必要があります。
1.4.1フォームの概要
学生テーブル:
コーステーブル:
SCテーブル:
1.4.2選択
- 選択は制限とも呼ばれます
- 選択とは、タプルを選択し、条件を満たすタプルを選択することです。
選択した結果は1行ずつです
1.4.2.1クエリの選択(例1)
情報部(IS)の全学生へのお問い合わせ
- 情報システムは学生形式であり、すべてのR形式は学生形式です。
Studentテーブルの属性コレクションは次のとおりです。{"Sno", "Sname", "Ssex", "Sage", "Sdept"}
- 必要な条件は
F(Sdept = IS)
したがって、質問に対する答え
は次のとおりです。クエリの結果は次のとおりです。
1.4.2.2クエリの選択(例2)
20歳未満の生徒に問い合わせる
- 年齢はStudentフォームに存在するため、今クエリする必要があるフォームはStudentフォームです。
- 必要な条件は、年齢が20歳未満であることですF(Sage <20)
したがって、質問に対する答え
は次のとおりです。クエリの結果は次のとおりです。
1.4.2.3クエリの選択(練習用の質問)
- 性別が女性の学生に関するクエリ情報
- 4ポイントに等しいコース情報を照会する
- CS部門の学生情報を照会する
概要:選択操作は、条件を満たす行を照会することです。
1.4.3プロジェクション
選択操作を使用すると、行のすべての情報を取得したことがわかります。たとえば、20歳未満の学生の情報を問い合わせたところ、学生の名前、学生ID、 20歳未満の学生の名前、他の学生番号、大学などを知りたいだけなら、1行ずつ選択した結果です。知るために
ここでは射影操作が必要です
選択操作は、属性を選択する操作です。つまり、射影とは、条件を満たす列を選択し、一部の行を自動的にキャンセルすることです(例については後で説明します)。
1.4.3.1射影クエリ(例1)
学生の名前と学生の部門をクエリします。クエリする必要のある条件から、クエリする必要があるのは名前の列と学生のシリーズであることがわかります。
- 学生の名前と部門は学生フォームにあるため、学生フォームでクエリを実行する必要があります
- 照会する必要のある属性は、学生の名前と学生の部門です。
質問への答えは次のとおりです。
SnameとSdeptをコンマで区切ります
結局、クエリから得られた答えは次のとおりです。
1.4.3.2プロジェクションクエリ(例2)
Studentテーブルでそれらの部門を照会します
- まず、Studentテーブルでクエリを実行する必要があります
- クエリする必要のある属性はシステムです
質問に対する答えは次のとおりです。
しかし、最終的にクエリする答えはどのようになりますか?
この図は、選択した操作の自動重複排除機能を示しています
概要:射影クエリは列を取得します
1.4.4参加
接続の意味:2つの関係のデカルト積から属性間の特定の関係を満たすタプルを選択します
説明:2つのテーブルのデカルト積の後に取得された大きなテーブルで、条件に一致するタプルをいくつか選択することです。
シンボル:
1.4.4.1一般的な接続(例)
一般的な接続は条件付き接続であり、2つのテーブルは条件に従って接続する必要があります
最初の一歩:
2番目のステップ:
3番目のステップ:
選択する必要のあるすべてのタプルが選択されているため、最終的な結果は次のようになります。
1.4.4.2同等の接続
同等の接続は特別な一般的な接続です
- 両方のテーブルに同じ属性列が必要です
以下の特定のトピックを通して理解しましょう
3番目のステップ:
最終結果は次のとおりです。
1.4.4.3自然接続(特別な同等の接続)
自然接続は特殊な同値関係であり、これも同値関係ですが、RBとSBが等しいため、同値関係が見つかった場合、最終結果の2番目の図に示すようにRBとSBが繰り返されます。RBと繰り返しのために余分なスペースが無駄になっているため、列のSB。したがって、この問題を解決するために自然な接続が使用されます
1.4.4.4外部接続
次の図に示すように、自然な接続から別の問題が見つかりました。
それが私たちの条件を満たしていないので、これは、両方の自然と同等の接続は破棄され、図中の赤でマークの場所です。この種の接続が呼び出される内部接続、および内部接続の反対が呼び出され、外側の接続。
-
外部結合:RテーブルとSテーブルで破棄された赤いタプルがピックアップされ、最終的に結合されたテーブルにない値がNULLに置き換えられます。最終的な結果は次のとおりです。
-
左外部結合:Rテーブルが左側にあるため、最終結果では破棄されたアイテムのみがRテーブルに保持され、Sリストは引き続き破棄されます。
-
右外部結合:Sテーブルが右側にあるため、最終結果では、破棄されたアイテムのみがSリストに保持され、Rリストは引き続き破棄されます。
1.4.5除算
いくつかの学習洞察:除算演算は関係代数の非常に強力なツールですが、除算演算の定義は非常にあいまいであり、定義は非常に重要です。多くの人が教科書を読んでいると思います。定義を見るたびに、私は非常に混乱していて、例を読んだ後、定義の意味を理解しますが、定義の主なアイデアを理解した後、定義を理解するために戻ってくる人はほとんどいません。例はもちろん、定義の一般的な意味を明確に理解することができますが、例を通して定義の一般的な意味を理解した後でも、定義に戻る必要があります。この方法でのみ、深く学ぶことができます(学習の個人的な理解、ようこそ一緒に通信する)
次のようなデータベースが手元にあるとします。
今、私たちは学生を最も前向きに学びたいという問題を抱えています、学生はすべてのコースに登録され、一時的に分割をあきらめ、私たちの最も単純な感情に、これを解決するための独自の論理を持っていますあなた自身の考えによると、それはプログラムを設計するようなものです。問題を解決するにはいくつかの手順が必要です。
以下は私自身の考えによるものです。
まず、次のように、SCテーブルを逆アセンブルし、各生徒を個別のテーブルにします。
次に、分解されたテーブルとCテーブルを1つずつ比較し、分解後の3つのテーブルのCourse属性がCテーブル(つまり、すべてのコースを含むテーブル)とまったく同じであることがわかります。分解後)次に、その人が誰であるかを調べ、問題が解決されます
実際、除算演算はこのロジックですが、除算演算はより厳密です。除算演算の手順は次のとおりです(SC÷C)。ここでは、上記で使用したデータベースを引き続き使用し、結論(SC ➗C)見つけることができる
最初のステップ:CテーブルとSCテーブルで同じ属性、つまりC属性を見つけ、C属性で射影演算を実行します(つまり、合計でいくつのコースがあるかを調べます)。
ステップ2:SCテーブルとCテーブルのさまざまな属性、つまりS属性を見つけ、S属性に対して射影演算を実行します(合計で生徒の数を調べます)
ステップ3:SCテーブルでSの画像セットを見つけます(各学生はどのコースを選択しましたか)
最後のステップは比較することです。ZhangSanの画像セットのみに表Cのすべてのコースが含まれているため、(SC➗C= Zhang San)
以下は、すべてのコースを選択した学生のリストを取得する必要がある場合の簡単な要約です。
最初のステップ:最後にコースが含まれるすべてのコースを取得する必要があるため、Cテーブルを投影します。
ステップ2:コースを選択する学生を取得する必要があるため、SCテーブルのSを投影する必要があります
3番目のステップ:学生がすべてのコースを選択したことを知るために、各学生がどのコースを選択するかを知る必要があるため、まだ必要なデータはSCテーブルのSの画像セットです。
4番目のステップ:これが最後のステップです。生徒の画像セットにCテーブルの投影が含まれていることを確認するために比較する必要があります。
除算演算は、上記のすべての関数をカプセル化する関数のようなものです。この関数を呼び出すときに、正しいパラメーターを入力すると、必要な答えを得ることができます。
結論を見てから定義を振り返ると、除算演算の定義は次のようになります。
何度か読んで、自分の言葉で定義を説明したいのですが、例を使わないと、自分の言葉で定義を説明するのが難しすぎて…言葉では言い表せません。 ..例を使用する場合、それは他のブログからの除算操作の要約にすぎません。上記の例を繰り返すために、RS÷Sの意味は次のとおりです。「RとSの間の接続RSで、Rタプルを見つけます。 Sのすべてのタプルに関連するものこのブログのアドレスは次のとおりです。リレーショナル代数除算演算
❤️花を広げる結び目を終わらせる❤️