2.2関係代数

2.2関係代数

データベーススペシャリスト試験の関係代数を学習、まとめ。

関係操作、関係完備

論理データモデルの三つの役割の一つであるデータ操作に対して、関係モデルではその機能を関係操作という。関係操作は、関係に対する問い合わせを関係の集合演算としてとらえた関係代数(relational algebra)かと、データの問い合わせ言語SQLなどのベースとなった関係計算(relational calculus)からなる。関係計算は関係論理ともいう。

データベースの操作言語で、関係計算と等しいかそれ以上の検索能力を持つものをCoddは関係完備(relational complete)という、関係代数もまた関係完備である。

関係計算の検索能力<=DB操作言語の検索能力

(1)関係代数の演算

関係代数は通常の集合演算と関係代数独自の演算からなる。通常の集合演算は、和、積、差、直積からなる。関係代数独自の演算は、射影、結合、選択、商からなる。

(2)通常の集合演算

①和(union)

和は、RとSとの間でOR演算を行い、和集合(R∪S)を作る。RとSの属性の数(列数)は同じ。和は重複行が生じない。SQLのUNIONと同じ。※UNION ALLは重複行を許す。

②積(intersect)

積はRとSとの間でAND演算を行い、積集合(R∩S)を作る。RとSの属性の数(列数)は同じ。RとSのAND演算は、RとSの共通部分を取り出すので、積は共通ともいう。R∩S=R-(R-S)と表現も。SQLのINTERSECT。

③差(difference)

差は、RとSのの間の差分(共通部分以外)を取り出す。差集合(R-S)。RとSの属性の数(列数)は同じ。SQLのNOT EXITS、EXCEPT。

④直積(Cartesian product:デカルト積)

RとSの直積は、Rの組とSの組とのすべての組み合わせからなる集合を作る(R×S)。直積の結果の「行数」はm×n行となる、結果の「列数」はr+sとなる。

(3)関係代数独自の演算

①射影(projection)

射影は、関係Rを構成する属性のうち、必要な属性A1、A2、・・・だけを残して新しい関係R[A1、A2、・・・]を作る。重複したタプル(行)は取り除かれる。SQLのDISTINCT。

②結合(join)

結合(θ)は、RとSの直積(R×S)の中から、指定された条件を満たすタプル(行)を取り出して新しい関係を作る。結合は、「直積と選択」の組み合わせ。θが=の場合を問う結合(equi-join)という。等結合は内容のまったく同じ列(列名は同じでも異なってもよい)が重複して現れるので冗長。

重複する列のうち片方を射影によって取り除いたものを自然結合(natural join)という。

③選択(selection)または制限(restriction)

選択は、Rの属性(列)間の比較条件を満足するタプル(行)からなる新しい関係を作る。選択はR[AθB]と表現。

④商(division)

商R÷Sでは、Rの中に商を示すタプルtとSの直積(t×S)が含まれていう場合に、その商にあたるタプルtを取り出す。RとSの属性の数(列数)をそれぞれr、sとする、商のタプル(商演算の結果得られるタプル)の列数はr-s個となる。商は直積、差、射影を用いいて導き出すこともある。