前提条件: DBMS のリレーショナル モデル
関係代数は手続き型クエリ言語です。関係代数は主にリレーショナル データベースと SQL 。関係代数を使用する主な目的は、1 つ以上の入力関係を出力関係に変換する演算子を定義することです。これらの演算子はリレーションを入力として受け入れ、リレーションを出力として生成するため、これらを組み合わせて使用して、潜在的に多くの入力リレーション (データがデータベースに保存されている) を 1 つの出力リレーション (クエリ結果) に変換する、潜在的に複雑なクエリを表現することができます。 。純粋な数学であるため、関係代数では英語のキーワードは使用されず、演算子は記号を使用して表現されます。
基本演算子
これらは、関係代数で使用される基本的な演算子です。
- 選択(σ)
- 投影(π)
- ユニオン(U)
- セット差(-)
- 交点を設定(∩)
- 名前を変更(ρ)
- デカルト積(X)
1. 選択(σ): これは、リレーションの必要なタプルを選択するために使用されます。
例:
| あ | B | C |
|---|---|---|
| 1 | 2 | 4 |
| 2 | 2 | 3 |
| 3 | 2 | 3 |
| 4 | 3 | 4 |
上記の関係については、 σ(c>3)R c が 3 より大きいタプルを選択します。
| あ | B | C |
|---|---|---|
| 1 | 2 | 4 |
| 4 | 3 | 4 |
注記: 選択演算子は必要なタプルを選択するだけで、表示はしません。表示にはデータ射影演算子が使用されます。
2. 投影(π): これは、リレーションから必要な列データを射影するために使用されます。
Javaで文字をintに変換する
例: 表 1 を考えてみましょう。リレーション R から列 B と C が必要だとします。
π(B,C)R will show following columns.>
| B | C |
|---|---|
| 2 | 4 |
| 2 | 3 |
| 3 | 4 |
注記: デフォルトでは、投影により重複データが削除されます。
3.ユニオン(U): 関係代数における和集合演算は、集合論における和集合演算と同じです。
例:
フランス語
| 学生の名前 | ロール番号 |
|---|---|
| ラム | 01 |
| モハン | 02 |
| ヴィヴェク | 13 |
| ジータ | 17 |
ドイツ人
| 学生の名前 | ロール番号 |
|---|---|
| ヴィヴェク | 13 |
| ジータ | 17 |
| シャム | 21 |
| ロハン | 25 |
コースにさまざまな選択科目がある学生の次の表を考えてみましょう。
π(Student_Name)FRENCH U π(Student_Name)GERMAN>
| 学生の名前 |
|---|
| ラム |
| モハン |
| ヴィヴェク |
| ジータ |
| シャム |
| ロハン |
注記: 2 つのリレーションの結合における唯一の制約は、両方のリレーションが同じ属性セットを持たなければならないことです。
4. 差の設定(-): 関係代数における集合差分は、集合論におけるものと同じ集合差分演算です。
例: 上記のフランス語とドイツ語の表から、Set Difference は次のように使用されます。
π(Student_Name)FRENCH - π(Student_Name)GERMAN>
| 学生の名前 |
|---|
| ラム |
| モハン |
注記: 2 つのリレーション間の Set Difference における唯一の制約は、両方のリレーションが同じ属性セットを持たなければならないことです。
5. 交差(∩)を設定します: 関係代数における集合交差は、集合論における集合交差演算と同じです。
例: 上記のフランス語とドイツ語の表から、集合交差点は次のように使用されます。
π(Student_Name)FRENCH ∩ π(Student_Name)GERMAN>
| 学生の名前 |
|---|
| ヴィヴェク |
| ジータ |
注記: 2 つのリレーション間の Set Difference における唯一の制約は、両方のリレーションが同じ属性セットを持たなければならないことです。
6. 名前を変更(ρ): 名前変更は、リレーションの属性の名前を変更するために使用される単項操作です。
ρ(a/b)R will rename the attribute 'b' of the relation by 'a'.>
7. 外積(X): 2 つの関係間の外積。 A と B としましょう。A X B の外積により、A のすべての属性と、その後に B の各属性が続きます。A の各レコードは、B のすべてのレコードとペアになります。
例:
Java参照型
あ
| 名前 | 年 | セックス |
|---|---|---|
| ラム | 14 | M |
| 終わり | 15 | F |
| キム | 二十 | M |
B
| ID | コース |
|---|---|
| 1 | DS |
| 2 | DBMS |
A×B
| 名前 | 年 | セックス | ID | コース |
|---|---|---|---|---|
| ラム | 14 | M | 1 | DS |
| ラム | 14 | M | 2 | DBMS |
| 終わり | 15 | F | 1 | DS |
| 終わり | 15 | F | 2 | DBMS |
| キム | 二十 | M | 1 | DS |
| キム | 二十 | M | 2 | DBMS |
注記: A に「n」タプルがあり、B に「m」タプルがある場合、A X B には「n*m」タプルがあります。
派生演算子
これらは、基本演算子から派生した派生演算子の一部です。
- 自然結合(⋈)
- 条件付き結合
1. 自然結合(⋈): 自然結合は二項演算子です。 2 つ以上のリレーション間の自然結合により、等しい共通属性を持つタプルのすべての組み合わせのセットが生成されます。
例:
EMP
| 名前 | ID | 部署名 |
|---|---|---|
| あ | 120 | それ |
| B | 125 | 人事部 |
| C | 110 | 販売 |
| D | 111 | それ |
部
| 部署名 | マネージャー |
|---|---|
| 販売 | そして |
| 生産 | と |
| それ | あ |
条件付きの EMP と DEPT 間の自然結合:
EMP.部門名 = 部門.部門名
EMP ⋈ DEPT
| 名前 | ID | 部署名 | マネージャー |
|---|---|---|---|
| あ | 120 | それ | あ |
| C | 110 | 販売 | そして |
| D | 111 | それ | あ |
2. 条件付き結合: 条件付き結合は自然結合と同様に機能します。自然結合では、デフォルトの条件は共通属性間で等しいですが、条件付き結合では、より大きい、より小さい、または等しくないなどの任意の条件を指定できます。
例:
R
| ID | セックス | マーク |
|---|---|---|
| 1 | F | 4つ。 |
| 2 | F | 55 |
| 3 | F | 60 |
S
| ID | セックス | マーク |
|---|---|---|
| 10 | M | 二十 |
| 十一 | M | 22 |
| 12 | M | 59 |
R と S を条件付きで結合する R.マーク>= S.マーク
| 取り除く | R.セックス | R.マークス | S.ID | S.セックス | S.マークス |
|---|---|---|---|---|---|
| 1 | F | 4つ。 | 10 | M | 二十 |
| 1 | F | 4つ。 | 十一 | M | 22 |
| 2 | F | 55 | 10 | M | 二十 |
| 2 | F | 55 | 十一 | M | 22 |
| 3 | F | 60 | 10 | M | 二十 |
| 3 | F | 60 | 十一 | M | 22 |
| 3 | F | 60 | 12 | M | 59 |
関係微積分
関係代数が手続き型クエリ言語であるのに対し、リレーショナル微積分は非手続き型クエリ言語です。基本的には最終結果を扱います。いつも何をすべきかは教えてくれますが、どうやってやるかは決して教えてくれません。
テストとテストの種類
関係微積分には 2 つのタイプがあります
- タプル関係計算(TRC)
- ドメイン関係計算(DRC)
詳細な記事:
関係代数の基本的な演算子
拡張関係代数演算子