|
関係代数(かんけいだいすう、リレーショナル代数、英: relational algebra)は、関係データベースの関係モデル (リレーショナルモデル)において、集合論と一階述語論理に基づいて、関係 (リレーション、表、テーブル)として表現されたデータを扱う、コンピュータ科学における代数的な演算の体系である。 関係として表現されたデータに対して行う演算体系としては、関係論理(関係計算)とこの項目で説明する関係代数の2種類が知られている。 関係代数と関係論理は、主にエドガー・F・コッドによって考案され、その後コッドを含めた関係データベース(関係モデル)の研究者たちが発展させてきた。 現在では、関係代数の演算子としては、和、差、交わり (交差) 、直積、制限 (選択) 、射影、結合、商の8種類が言及されることが多い。 ただし属性名変更や拡張、要約などこの他の演算子も考案されている。 関係代数を実装したデータベース言語(問い合わせ言語)としては、SQL や Tutorial D などが挙げられる。 ただし SQL については、関係代数を完全な形で実装していないとして批判する意見がある。 数学的に純粋な関係代数は、数理論理学や集合論と比較して、代数的構造をなしている。 == 概要 == 関係代数の基本的な考え方は、集合論と一階述語論理の流れをくんでいる。 関係代数の演算子は、閉包性(closure)をもつ。関係において閉包である。 つまり次のことがいえる。 * 関係代数は、1つもしくは複数の関係を基にして演算を行う。 * 関係代数で演算を行って返される結果は、必ず関係である。 * 関係代数演算の結果として返された関係を基にして、さらに関係代数で演算することができる。入れ子になった関係代数演算を行うことができる。 現在、言及されることが多い関係代数の演算子としては、和、差、交わり (交差) 、直積、制限 (選択) 、射影、結合、商の8種類がある(この8種類の演算子については後の#基本的な演算子の節で説明する)。 ただし属性名変更や拡張、要約などこの他の演算子も考案されている(後の#応用的な演算子の節で説明する)。 関係代数は、関係データベース管理システム(RDBMS、関係データベース)のデータベース言語(問い合わせ言語)の基礎となっている。 関係代数と関係論理(関係計算)は互いに等価である。 関係代数で表現された式は、等価な関係論理の式で表現することができる。 また関係論理で表現された式は、等価な関係代数の式で表現することができる。 関係代数を実装したデータベース言語としては、SQL や Tutorial D などが挙げられる。 SQLは、関係代数と関係論理を実装しているとされる。 ただし一部の研究者などの人々(クリス・デイトやヒュー・ダーウェンなど)は、SQLに対して、関係モデルを考案したエドガー・F・コッドの関係代数を完全な形で実装していないなどとして、批判的な立場をとっている。 デイトとダーウェンは完全な実装として D(Tutorial D)を考案し提唱している。 関係は何らかの述語の外延と解釈することができるので、関係代数の各々の演算子は述語計算に相当するものと解釈できる。 例えば、自然結合は論理積 AND()に相当する。 関係 ''R'' と関係 ''S'' があり、それぞれ述語 ''p1'' と述語 ''p2'' の外延を表現したものとすると、''R'' と ''S'' の自然結合(''R'' ''S'')は、述語 ''p1'' ''p2'' の外延を表現する。 関係代数の演算子の正確な集合は、関係代数の定義により異なり得る。 また関係代数の演算子の正確な集合は、名前付けを行わない関係モデル(数学的な関係を採用している)を使うか、それとも名前付けを行う関係モデル(数学的な関係の名前付けによる一般化を採用している)を使うか、ということにも依存している。 この項目の説明では、名前付けを行う関係モデルを使うことにする。 名前付けを行う関係モデルは、コッドが提唱したものであり、一定の人々によりコッドの最も重要な革新的業績と考えられている。 こうした人々による肯定的な評価は、コッドが自分の関係モデルから関係の属性の順序という概念を除外したことが大きな理由である。 このモデルでは組(タプル)は、属性名の集合から属性値の集合を導出する部分関数である。 この項目の説明では、組 ''t'' の属性 ''a'' を ''t(a)'' と記述する。 コッドの関係代数が一階述語論理に関しては実際には完全ではないと留意しておくことは、重要である。 仮に一階述語論理に関して完全であったならば、関係モデルをどのように実装するにせよ、コンピュータ上の克服できない困難に突き当たってしまうであろう。 こうした困難を克服するためにコッドは、関係代数の演算対象を有限の関係のみに限定し、また否定(NOT)と選言 (OR)を限定的にサポートすることを提唱した。 コッドの関係代数は、実際にはホーン節で再帰と否定の無い一階述語論理のサブセットである。 こうした限定に類することは、他の多くの論理に基づくコンピュータ言語においてもみられることである。 コッドは、関係データベース言語の表現能力について関係完備という用語を定義した。 関係完備とは、コッドが提唱した限定のもとで、一階述語論理に関して完全な言語であることを意味する。 実際にコッドが提唱した限定は、コッドの関係代数をデータベースのさまざまな目的に適用することにおいて、不都合は無かった。 関係代数は関係完備である。 関係代数と同等もしくは同等以上の表現能力を持つ関係データベース言語は関係完備であるといえる。 関係論理(関係計算)は、関係代数と同等の表現能力を持つため、関係完備である。 なお関係論理には定義域関係論理と組関係論理がある。 どのような代数であれ、一定の数の演算子は基本的 (プリミティブ) であり、それ以外の演算子は、基本的な演算子のみをもって定義できるため、基本的ではない。 関係代数における基本的な演算子の選択が、論理学における基本的な演算子の選択と似ているならば、利便である。 AND、OR および NOT の論理における基本的な演算子の選択は恣意的であることはよく知られているが、コッドは自分の関係代数において恣意的な選択をした。 コッドは関係代数において次の6つの基本的な演算子を定めた。 * 制限(選択) * 射影 * 直積(直積集合) * 和(和集合) * 差(差集合) * 属性名変更 (実際にはコッドは属性名変更を基本的な演算子群から除去した。しかし属性名変更を含めた例として後の#歴史の節で述べる ISBL が存在する) この6つの演算子は、表現能力を損なうこと無くこの6つのいずれをも除くことはできないという意味で、関係代数の基盤をなす。 他の多くの演算子がこの6つの演算子を基にして定義されてきた。 この6つの演算子を基にして定義された演算子のうち非常に重要なものは、交わり(交差、共通部分)、商、自然結合である。 実際に ISBL は直積を自然結合で置き換えるという重要な事例を残した。 直積は自然結合から退化した演算である。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「関係代数 (関係モデル)」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Relational algebra 」があります。 スポンサード リンク
|