関係代数 (関係モデル)
SELECT A, B, (B * 2.54) AS X FROM R
R EXCEPT S
関係代数の基本的な考え方は、集合論と一階述語論理の流れをくんでいる。
関係代数の演算子は、閉包性(closure)をもつ。関係において閉包である。 つまり次のことがいえる。
関係代数は、1つもしくは複数の関係を基にして演算を行う。
関係代数で演算を行って返される結果は、必ず関係である。
関係代数演算の結果として返された関係を基にして、さらに関係代数で演算することができる。入れ子になった関係代数演算を行うことができる。
現在、言及されることが多い関係代数の演算子としては、和、差、交わり (交差) 、直積、制限 (選択) 、射影、結合、商の8種類がある(この8種類の演算子については後の#基本的な演算子の節で説明する)。 ただし属性名変更や拡張、要約などこの他の演算子も考案されている(後の#応用的な演算子の節で説明する)。
関係代数は、関係データベース管理システム(RDBMS、関係データベース)のデータベース言語(問い合わせ言語)の基礎となっている。
関係代数と関係論理(関係計算)は互いに等価である。 関係代数で表現された式は、等価な関係論理の式で表現することができる。 また関係論理で表現された式は、等価な関係代数の式で表現することができる。
関係代数を実装したデータベース言語としては、SQL や Tutorial D などが挙げられる。 SQLは、関係代数と関係論理を実装しているとされる。
商(division)演算 R ÷ S は、 R に固有の属性名に対する R のタプルの制限、つまりRの属性ではあるがSの属性ではなく、 Sのタプルとのすべての組み合わせがRに存在するという制限で構成されている。 商は直積演算とは対称となる逆の演算と考えることができる。 関係Rと関係Sがあり、 β {\displaystyle \beta } を R の属性集合、 γ {\displaystyle \gamma } を S の属性集合とする。 β ∩ γ = ∅ {\displaystyle \beta \cap \gamma =\varnothing } が成立する場合、次のようになる。
T = R × S {\displaystyle T=R\times S} T ÷ S = R {\displaystyle T\div S=R}
SELECT A, MAX(B) AS X FROM R GROUP BY A
集合論に基づく関係演算子(直積を除く、和、差、交わり)では、2つの型適合(type-compatibility)する関係を対象として演算を行う。 この種の関係演算では、型適合しない2つ関係を対象として演算を行うことはできない。 型適合は、和両立(union-compatibility)ともいう。
関係の型適合とは、言い換えれば2つの関係がうまく組み合わせることができるということである。 具体的には、関係 R と関係 S について、次の条件が満たされる場合、R と S は型適合である。
R と S が同じ数の属性をもっていること。
R と S がもつ属性の名前が同じであること。
R と S がもつ同じ名前の属性の定義域が同じであること。