関係演算
関係演算は、関係データベースにおいてテーブル内のデータを条件に基づき操作する方法です。
ここでは、選択・射影・結合についてそれぞれ説明します。
選択
関係演算の選択は、テーブルから特定の条件を満たす行を抽出する(抜き出す)操作です。以下に具体的なサンプルを用いた例を示します。
例: 学生テーブル(学生ID、氏名、年齢、専攻)から選択操作で年齢が20歳以上の学生を抽出する。
学生テーブル:
学生ID | 氏名 | 年齢 | 専攻 |
---|---|---|---|
1 | 太郎 | 18 | 数学 |
2 | 花子 | 21 | 英語 |
3 | 次郎 | 20 | 物理 |
選択操作: 年齢 >= 20 の行を抽出。
該当するのは黄色の2行です。
学生ID | 氏名 | 年齢 | 専攻 |
---|---|---|---|
1 | 太郎 | 18 | 数学 |
2 | 花子 | 21 | 英語 |
3 | 次郎 | 20 | 物理 |
結果:
学生ID | 氏名 | 年齢 | 専攻 |
---|---|---|---|
2 | 花子 | 21 | 英語 |
3 | 次郎 | 20 | 物理 |
この例では、年齢が20歳以上の学生(花子と次郎)が選択されています。選択操作は、特定の条件を満たす行を取り出すことができるため、データの絞り込みに役立ちます。
射影
関係演算の射影は、テーブルから特定の条件を満たす列を抽出する(抜き出す)操作です。以下に具体的なサンプルを用いた例を示します。
例: 学生テーブル(学生ID、氏名、年齢、専攻)から射影操作で学生の氏名と専攻のみを抽出する。
学生テーブル:
学生ID | 氏名 | 年齢 | 専攻 |
---|---|---|---|
1 | 太郎 | 18 | 数学 |
2 | 花子 | 21 | 英語 |
3 | 次郎 | 20 | 物理 |
射影操作: 氏名、専攻 列を抽出。
該当するのは黄色の二行です。
学生ID | 氏名 | 年齢 | 専攻 |
---|---|---|---|
1 | 太郎 | 18 | 数学 |
2 | 花子 | 21 | 英語 |
3 | 次郎 | 20 | 物理 |
結果:
氏名 | 専攻 |
---|---|
太郎 | 数学 |
花子 | 英語 |
次郎 | 物理 |
この例では、学生の氏名と専攻のみが抽出されています。射影操作は、特定の列のみに注目してデータを取り出すことができるため、不要な情報を除外してデータの可読性を向上させることができます。
選択は表の横(行)の要素を、射影は縦(列)の要素をそれぞれ抽出している点に注目!
結合
関係演算の結合は、2つのテーブルを特定の条件で結びつける操作です。以下に具体的なサンプルを用いた例を示します。
例: 学生テーブル(学生ID、氏名、クラスID)とクラステーブル(クラスID、クラス名)を結合する。
学生テーブル:
学生ID | 氏名 | クラスID |
---|---|---|
1 | 太郎 | A |
2 | 花子 | B |
3 | 次郎 | A |
クラステーブル:
クラスID | クラス名 |
---|---|
A | 数学クラス |
B | 英語クラス |
結合操作: 学生テーブルとクラステーブルをクラスIDで結合
二つのテーブルの黄色の列の一致したレコードで結合します。
学生ID | 氏名 | クラスID |
---|---|---|
1 | 太郎 | A |
2 | 花子 | B |
3 | 次郎 | A |
クラスID | クラス名 |
---|---|
A | 数学クラス |
B | 英語クラス |
結果:
学生ID | 氏名 | クラスID | クラス名 |
---|---|---|---|
1 | 太郎 | A | 数学クラス |
2 | 花子 | B | 英語クラス |
3 | 次郎 | A | 数学クラス |
この例では、学生テーブルとクラステーブルがクラスIDを共通のキーとして結合され、学生の氏名とクラス名が一緒に表示されています。
結合操作は、異なるテーブルの情報を組み合わせて新たなデータを生成することができるため、データ分析やレポート作成などで役立ちます。
集合演算
関係データベースの集合演算とは、テーブルを集合として扱い、複数の表から重複しないようにすべての行を取り出したり、共通する行を取り出したりして新しいテーブルを作成する操作のことを指します。主に、和演算、積演算、差演算などの演算があります。
以下の二つのテーブルを例に説明します。
例: クラスAの生徒テーブル(学生ID、氏名)とクラスBの生徒テーブル(学生ID、氏名)
クラスAの生徒テーブル:
学生ID | 氏名 |
---|---|
1 | 太郎 |
2 | 花子 |
クラスBの生徒テーブル:
学生ID | 氏名 |
---|---|
2 | 花子 |
3 | 次郎 |
和演算
和演算(和演算集合)は、二つのテーブルAとBのすべての行を取り出して、重複する行を取り除いた新しいテーブルを作成します。結果として得られるテーブルは、AとBの両方に存在する全てのユニークな行を含みます。
学生ID | 氏名 |
---|---|
1 | 太郎 |
2 | 花子 |
3 | 次郎 |
積演算
積演算(積演算集合)は、二つのテーブルAとBに共通する行のみを抽出して新しいテーブルを作成します。つまり、AとBの両方に存在する行だけが含まれます。
学生ID | 氏名 |
---|---|
2 | 花子 |
差演算
差演算(差演算集合:テーブルA – テーブルB)は、一方のテーブルAからもう一方のテーブルBに含まれる行を除外した新しいテーブルを作成します。結果として得られるテーブルには、Aに存在しBには存在しない行のみが含まれます。
学生ID | 氏名 |
---|---|
1 | 太郎 |
これらの演算は、テーブル間のデータを組み合わせたり、比較したりする際に役立ちます。
ただし、これらの演算を適用するには、テーブル間で共通の属性(列名)が必要です。また、行の数が多いほど処理に時間がかかることがあります。