関係モデル

モデル

関係モデル（リレーショナルモデル）における基本的な前提は、あらゆるデータは n 項（n-ary）の関係（リレーション）で表現されるということである。
数学における関係は二項関係をいうが、関係モデルでは関係の概念を n 項に拡張している（nは0もしくは正の整数）。
一つの n 項の関係は、n個の定義域（ドメイン、後述する）の直積集合の部分集合である。
数学モデルでは推論は二値の述語論理で行う。
すなわち個々の命題について真か偽かのいずれかの評価を行う。
数学の命題は真か偽かの二値であり「未知の値」(unknown) や「不適切な値」(not applicable) のような第三の値は無い。
なおコンピュータ科学では「未知の値」や「不適切な値」はしばしばnullに対応づけられる。
関係モデルにおいては、二値論理が関係モデルの重要な要素であり三値論理を許容すべきでないと考える人々と、三値論理を関係モデルで許容できると考える人々がおり、研究者の間で見解が分かれている。
関係モデルではデータ（関係）の演算は関係代数あるいは関係論理（関係計算）を使って行う。
関係代数と関係論理は同等の演算能力をもつ。
関係モデルを活用することにより、関係データベースでデータベースを設計（データベース設計）する人はデータベースに格納する対象となる情報を、整合性を備え論理的に表現することができる。情報の整合性は、データベース設計で制約の宣言を行うことで実現することができる。
ここでいうデータベース設計は論理設計（スキーマ）と呼ばれることが多い。
関係モデルの理論には、関係の正規化という過程がある。
関係を正規化することにより、関係データベースであるデータベースの設計から、論理的に同等でありかついくつかの意味でより望ましい特性をもつデータベース設計を、導き出すことができる。一方で、アクセスプランの算出やその他関係モデルの実装、データ演算の詳細は、関係データベース管理システム（RDBMS）のエンジンにより制御されるのであって、論理設計は関知しない。論理設計はRDBMSでパフォーマンスチューニングのためによく行われる実践とは水準が異なる。ただしこうしたパフォーマンスチューニングでは論理設計の変更を必要とすることも多い。
関係モデルの基礎的な要素は定義域; instance（ドメイン; domain）である。定義域はデータ型と同じ意味と考えて良い。現在は型（タイプ; type）と略されることも多い。
属性 (attribute) は、属性名と型名（定義域名）のペアから構成される。属性の名前と値のコンポーネントの順序づけられていない集合を組（タプル; tuple）という。属性値は、属性の定義域に適合する具体的な値である。属性値は、スカラ値もしくはより複雑な構造をもつ値である。
関係（リレーション; relation）は、見出し (heading) と本体 (body) から構成される。
見出しは順序づけられていない属性の集合である。本体は順序づけられていない組の集合である。n 項の関係の本体は n 組の集合から構成される。ある関係の見出しはその関係に含まれる組の見出しでもある。
関係は n 組の集合として定義される。数学の文脈においても、関係モデルの文脈においても、集合とは順序づけられていない要素の集まりである。
ただし一部のRDBMSと称するシステムは、データに対して順序づけを強制している。こうしたシステムは、関係モデルに準拠していないとして批判されることがある。数学では、組に含まれる要素間には順序が存在し、要素の重複は許容される。
関係モデルを考案したエドガー・F・コッドは、当初はこの数学上の定義を使って組を定義していた。
後に組の概念は変更されたが、組という概念名は変わっていない。この優れた組の概念により、直ちに重要な帰結として、関係モデルの関係代数の直積演算において交換法則が成立した。
現在、表（テーブル; table）は関係の視覚的表現として広く受け容れられている。組は表の行 (row) の概念に似ている。
データベース言語 SQL では、表の列（カラム; column）が順序づけられていることに注意する必要がある。SQL は関係モデルに準拠していないとして批判されることがあり、こうした順序づけの存在は批判の根拠の一つとなっている。
関係変数（リレーション変数; relvar; relation variable）は、特定の関係型の名前つきの変数である。どの時点においても、関係変数にはその型に対応した何らかの関係（関係値）が割り当てられている。関係が含む組の数は0の場合もある。
関係モデルの基本的な原理は情報の原理である。あらゆる情報は関係に含まれるデータとして表現される。この原理から導き出されることとして、関係データベースは関係変数の集合であり、関係データベースに対するあらゆる検索の結果は関係として表現される。
関係データベースには整合性が強制的に適用される。関係データベースで論理スキーマの一部として整合性の制約が宣言され、RDBMS によって関係データベースにアクセスするあらゆるアプリケーションソフトウェアに対して強制的に適用される。関係データベースにアクセスするアプリケーションソフトウェアに関係データベースの整合性の規則を実装する必要があるわけではない。一般的に、制約は関係比較演算子を使って表現される。整合性制約を記述するには、理論的にはただ一つの関係比較演算子「—は—の部分集合である」(⊆) だけで十分である。実際には、便利ないくつかの短縮記法を使うことができるであろう。その中でもとりわけ重要なのは、候補キー（candidate key; 実際にはスーパーキー superkey）、外部キー (foreign key) の各制約である。

データベースへの適用

関係データベースにおける典型的な定義域は、整数型、文字列型、論理型などである。定義域の名前は、"int"、"char"、"boolean" など一連の名前が規定される。
属性は関係のデータ構造の一部として宣言され、属性の宣言ではその属性名と定義域の名前を指定する。組はデータベース言語として SQL を採用しているデータベースでは基本的に行と同じ概念である。
属性名の例は "name" や "age" などである。属性値は、特定の組の特定の属性に含まれる具体的な値（エントリ）であり、例えば "John Doe" や "35" などである。
関係は表に似たデータ構造の仕様でありまたデータ（本体）を含んでいる。見出しは関係のデータ構造の宣言である。本体は関係のデータ構造に含まれるデータである。

他のデータベースモデル

関係モデル（リレーショナルモデル）以外のデータベースのモデルとしては、階層型データモデルやネットワーク型データモデルがある。
これらの古いアーキテクチャを使ったいくつかのシステムが、現在もデータセンターで使われており、大容量のデータを扱う必要がある場合や、既存のシステムが非常に複雑であるために関係モデルを採用したシステムに移行するには多大な費用を要する場合などに、使われている。
新しいデータモデルとしてはオブジェクト指向のデータモデルがあり、近年ではオブジェクトデータベースを使うことができるようになっている。
2009年現在では関係データベースと比べると使われる事例は少ないものの、少しずつ採用され始めている。
オブジェクトデータベースの有用性については見解が分かれている。
オブジェクトデータベースにはオブジェクト指向プログラミング言語との親和性が高いという特長がある。
一方で一部の人々は、オブジェクトデータベース管理システム (ODBMS) の多くは正統的な DBMS（データベース管理システム）というよりもむしろ DBMS 構築キットであるとして、あまり有用な技術とは認識していない。
関係モデルは形式化された最初のデータモデルである。関係モデルが定義された後に、非形式的なデータモデルが、階層型データベース（階層型データモデル）やネットワーク型データベース（ネットワーク型データモデル）を記述するために作られていった。階層型データベースとネットワーク型データベースは、関係データベース以前に既に存在していた。しかしそれらがモデルとして記述されたのは、関係モデルが定義された後のことであり、その目的はデータモデル間の比較をするための基礎を確立するためであった。

歴史

19世紀のドイツの数学者ゲオルク・カントールは、集合論を考案した。
アメリカ合衆国の数学者 D・L・チャイルズは1968年の論文 "Description of a Set-Theoretic Data Structure" において、データやデータの検索を集合と集合演算を用いて表現する、集合論データ構造を考案した。集合と集合演算を採用することにより物理的データ構造からの独立性が実現された。これは当時としては先駆的な業績であった。
エドガー・F・コッドは、1970年の論文 "A Relational Model of Data for Large Shared Data Banks" で、関係モデル（リレーショナルモデル）をデータの一般モデルとして考案した。この論文では、チャイルズの1968年の論文も引用している。
その後、関係モデルは多くの人々によりモデルの修整や改良が行われた。クリス・デイトとヒュー・ダーウェンは著書 The Third Manifesto（第1版は1995年に出版された）において、関係モデルがその基本原理を損なうこと無く望ましい形でオブジェクト指向機能に対応する技法を提示した。

実装

エドガー・F・コッドが考案しクリス・デイトやヒュー・ダーウェンなどの人々により説明されてきた意味での、関係モデル（リレーショナルモデル）に基づいた関係データベース管理システム (RDBMS) の真の実装を開発しようという試みは、これまでいくつか行われてきた。しかし2008年現在の時点では広く採用されるに至った成功例は無い。近年のこうした試みの一つとして Dataphor (Alphora社) という RDBMS がある。

論争

エドガー・F・コッド自身は、1970年に関係モデル（リレーショナルモデル）を公表して数年後に、欠損情報を扱うために関係モデルの三値論理バージョンを提唱した。そして論文 The Relational Model for Database Management Version 2 (1990) における関係モデルの四値論理バージョンの提唱へとさらに一歩踏み出した。しかしこれらが実装されることは全く無かった。その理由はおそらくそのモデルが複雑であったためであろう。
SQLのNULLの概念は三値論理システムの一部をなすものと想定されていた。しかしSQL標準とその実装に含まれた論理的齟齬によりすぐに崩壊した。
先の#SQL標準の節を参照。