Web教材一覧データベース

関係代数

学習のポイント

RDB(関係データベース)の基本操作として、射影、選択、結合に関しては、「RDBとSQL」で学習しました。ここでは、それらの基本となる関係代数(Relational Algebra)の代表的な演算について学習します。

キーワード

関係代数、和、差、積、結合、直積、商


型適合の2つの表の演算

型適合とは、図のようにAとBの列数、列名、データ型が一致していることです。

和:A∪B

A、Bの少なくとも一方にある行(重複した行は一方だけ)を取り込み、一つの表にします。
重複の判定は行全体で行うので、例えば "宇野次郎" の[学部コード]が異なれば、重複ではなく、二つの "宇野次郎" が取り込まれます。

SQL

  SELECT 学籍番号, 氏名 FROM A
    UNION
  SELECT 学籍番号, 氏名 FROM B
  ORDER BY 番号;

差:A-B

Aから、Bにある行を削除します。いいかえれば、AにあってBにないものを取り出します。

SQL

  SELECT 学籍番号, 氏名 FROM A
    MINIS
  SELECT 学籍番号, 氏名 FROM B;

積:A∩B

「共通」「交わり」ともいいます。A、Bの両方にある行を取り出します。
 A∩B=A-(A-B) の関係があります。

  SELECT 学籍番号, 氏名 FROM A
    INTRSECT
  SELECT 学籍番号, 氏名 FROM B;


型不適合の2つの表の演算

自然結合:A*C

「RDBとSQL」での結合操作と同じです。結合演算には多くの種類があり、それを区分するときには自然結合といいます。

直積:A×C

交差結合」「デカルト積」ともいいます。Aの各行とCの各行を組み合わせた表になります。
結果の表は、列数=Aの列数+Cの列数、行数=Aの行数×Cの行数 になります。

SQL

  SELECT * FROM A
    CROSS JOIN C;

内部結合
AとCを結合するキーとなる列名を指定して、共通の値をもつ行同士を連結します。いいかえれば、クロス結合の結果から、ON句で与えられた結合条件を満たさない行を削除します。
  SELECT * FROM A
    INNER JOIN
    ON A.学部コード = C.学部コード;
外部結合
一方の表に存在している行について、他の表を接合します。
その「一方の表」が、LEFTもしくはRIGHTか両方か(FULL)で、左外部結合(LEFT OUTER JOIN)、右外部結合(RIGHT OUTER JOIN)、完全外部結合(FULL OUTER JOIN)があります。

商:D÷A

D÷Aとは、A×C=DとなるCを求める演算です。
SQLでは対応した命令は存在しません。


本シリーズの目次へ