関係代数(かんけいだいすう、リレーショナル代数、英: relational algebra)は、関係データベースの関係モデル (リレーショナルモデル)において、集合論と一階述語論理に基づいて、関係 (リレーション、表、テーブル)として表現されたデータを扱う、コンピュータ科学における代数的な演算の体系である。
関係として表現されたデータに対して行う演算体系としては、関係論理(関係計算)とこの項目で説明する関係代数の2種類が知られている。関係代数と関係論理は、主にエドガー・F・コッドによって考案され、その後コッドを含めた関係データベース(関係モデル)の研究者たちが発展させてきた。
現在では、関係代数の演算子としては、和、差、交わり (交差) 、直積、制限 (選択) 、射影、結合、商の8種類が言及されることが多い。ただし属性名変更や拡張、要約などこの他の演算子も考案されている。
関係代数を実装したデータベース言語(問い合わせ言語)としては、SQL や Tutorial D などが挙げられる。ただし SQL については、関係代数を完全な形で実装していないとして批判する意見がある。
数学的に純粋な関係代数は、数理論理学や集合論と比較して、代数的構造をなしている。 関係代数の基本的な考え方は、集合論と一階述語論理の流れをくんでいる。 関係代数の演算子は、閉包性(closure)をもつ。関係において閉包である。つまり次のことがいえる。 現在、言及されることが多い関係代数の演算子としては、和、差、交わり (交差) 、直積、制限 (選択) 、射影、結合、商の8種類がある(この8種類の演算子については後の#基本的な演算子の節で説明する)。ただし属性名変更や拡張、要約などこの他の演算子も考案されている(後の#応用的な演算子の節で説明する)。 関係代数は、関係データベース管理システム(RDBMS、関係データベース)のデータベース言語(問い合わせ言語)の基礎となっている。 関係代数と関係論理(関係計算)は互いに等価である。関係代数で表現された式は、等価な関係論理の式で表現することができる。また関係論理で表現された式は、等価な関係代数の式で表現することができる。 関係代数を実装したデータベース言語としては、SQL や Tutorial D などが挙げられる。SQLは、関係代数と関係論理を実装しているとされる。ただし一部の研究者などの人々(クリス・デイトやヒュー・ダーウェンなど)は、SQLに対して、関係モデルを考案したエドガー・F・コッドの関係代数を完全な形で実装していないなどとして、批判的な立場をとっている。デイトとダーウェンは完全な実装として D(Tutorial D)を考案し提唱している。 関係は何らかの述語の外延と解釈することができるので、関係代数の各々の演算子は述語計算に相当するものと解釈できる。例えば、自然結合は論理積 AND( ∧ {\displaystyle \land } )に相当する。関係 R と関係 S があり、それぞれ述語 p1 と述語 p2 の外延を表現したものとすると、R と S の自然結合(R ⋈ {\displaystyle \bowtie } S)は、述語 p1 ∧ {\displaystyle \land } p2 の外延を表現する。 関係代数の演算子の正確な集合は、関係代数の定義により異なり得る。また関係代数の演算子の正確な集合は、名前付けを行わない関係モデル(数学的な関係を採用している)を使うか、それとも名前付けを行う関係モデル(数学的な関係の名前付けによる一般化を採用している)を使うか、ということにも依存している。この項目の説明では、名前付けを行う関係モデルを使うことにする。名前付けを行う関係モデルは、コッドが提唱したものであり、一定の人々によりコッドの最も重要な革新的業績と考えられている。
概要
関係代数は、1つもしくは複数の関係を基にして演算を行う。
関係代数で演算を行って返される結果は、必ず関係である。
関係代数演算の結果として返された関係を基にして、さらに関係代数で演算することができる。入れ子になった関係代数演算を行うことができる。