関係モデル(リレーショナルモデル)とは|コッド提唱の定義・仕組みとSQL対応
データベース管理のためのリレーショナルモデルは、一階の述語論理に基づいたデータベースモデルである。エドガー・F・コッドが1969年に提唱した。データベースの関係モデルでは、すべてのデータは関係にグループ化されたタプルで表現される。関係モデルで構成されたデータベースをリレーショナルデータベースと呼ぶ。
リレーショナルモデルの目的は、データやクエリを指定するための宣言的な方法を提供することである。ユーザーは、データベースにどのような情報が含まれているか、どのような情報が欲しいかを直接述べる。データがどのような構造で保存されているか、また、ユーザーの要求に応えてデータを取り出す作業は、データベースシステムに委ねられており、ユーザーには見えない。
ほとんどのリレーショナルデータベースは、データ定義・問い合わせ言語であるSQLを使用しています。これらのシステムは、リレーショナルモデルの工学的な近似性とみなされるものを実装しています。SQLデータベーススキーマのテーブルは述語変数に対応し、テーブルの内容は関係に対応し、キー制約、その他の制約、SQLクエリは述語に対応します。現在、多くのデータベースシステムはオリジナルモデルとは異なっている。コッドは原型の原理を損なう逸脱には猛烈に反論しました。
基本概念
- 関係(relation):属性(列)の集合で定義される構造を持ち、その中に複数のタプル(行)が含まれる。数学的には集合として扱われる。
- タプル(tuple):関係に含まれる各行。各タプルは属性に対応する値の列で表される。
- 属性(attribute):関係の列に相当し、各属性は定義済みのドメイン(値の集合)を持つ。
- スキーマ(schema)とインスタンス(instance):スキーマは関係の名前と属性の型などの定義、インスタンスはある時点における実際のタプル集合(データ)を指す。
- キー制約:候補キー、主キー、外部キーなど。キーはタプルを一意に識別する属性または属性の組合せ。
リレーショナル代数・述語論理との関係
リレーショナルモデルは一階述語論理(述語計算)を基礎にしており、データ操作は以下のような理論的枠組みで表現されることが多いです。
- リレーショナル代数:選択(σ)、射影(π)、和(∪)、差(−)、直積(×)、結合(⨝)、除算(÷)などの演算子で関係を組合せて新たな関係を作る操作群。
- リレーショナル計算(述語計算):タプル述語計算・ドメイン述語計算といった宣言的な記述手法。SQLはこの宣言的アプローチに近いが、完全に同一ではない。
コッドの設計原理(コッドの12則)
エドガー・F・コッドはリレーショナルモデルの実装と標準化のための原則を提示しました。一般に「コッドの12則(0〜11)」として知られます。主要な趣旨は次の通りです:
- 情報は常に値の集合(関係)として表現される(情報規則)。
- 任意のデータは関係を通じて直接アクセス可能であること(保証されたアクセス規則)。
- NULL(不明・適用不能な値)の体系的扱い。
- 動的なオンラインカタログ(データ定義がデータとして格納され、クエリ可能であること)。
- 少なくとも一つのデータ操作言語(サブ言語)を持ち、集合操作・更新を高水準で行えること。
- ビューの更新可能性、物理設計と論理設計の独立性、整合性制約の独立管理など。
SQLとの対応と主な相違点
多くの商用/オープンソースのDBMSはSQLを採用しており、実務ではこれらが「リレーショナルデータベース」と呼ばれます。しかし、SQL実装は理論上のリレーショナルモデルからいくつかの点で逸脱しています。主な差異は以下の通りです:
- 集合ではなくバッグ(重複行)の扱い:標準SQLのSELECTは結果の重複を自動的に排除しない(DISTINCTを指定しないと重複行が残る)。理論上の関係は集合であり、重複を持たない。
- NULL値の導入:NULLは「不明」「適用不可」など複数の意味を持ち、三値論理を引き起こす。コッドはNULLの扱いについて体系的処理を求めたが、実際の実装・解釈にはばらつきがある。
- 順序の存在:SQLの出力はORDER BYで順序付けられるが、理論上の関係は順序を持たない集合である。
- ドメインと型の扱い:SQLは豊富なデータ型を持ち、型システムにより制約するが、実装ごとの互換性や挙動差がある。
- 完全な述語計算との違い:SQLは多くの点で述語計算に対応するが、いくつかの操作(例えば集合の演算やNULLに関する厳密な意味)では理論と一致しない場面がある。
正規化と整合性
リレーショナルモデルはデータ冗長性を削減し、整合性を保つための正規化手法と密接に関連します。正規形(第一正規形、第二正規形、第三正規形、BCNFなど)は、関係に内在する関数従属を分析してスキーマを分割する助けとなります。これにより更新異常、挿入/削除異常を軽減できます。
利点と課題
- 利点:
- 宣言的なクエリ記述(何を得たいかを指定すれば良い)により、生産性が高い。
- 理論的に厳密であり、整合性制約の表現が明確。
- トランザクションや並行制御を通じた一貫性・信頼性の担保が可能。
- 課題:
- 大規模分散処理やスキーマの頻繁な変更、非構造化データには必ずしも最適でない場合がある(NoSQLの台頭の背景)。
- SQL実装の差異(NULL、重複、型など)により、理論上の振る舞いと実装が異なることがある。
運用上の注意・実務でのポイント
- スキーマ設計時に正規化とパフォーマンスのバランスを検討する(部分的な非正規化は実務上よく行われる)。
- キー制約・外部キー・チェック制約を適切に設計して整合性を強制する。
- NULL値の意味を明確にし、可能ならば代替値やNULL禁止ポリシーを検討する。
- SQLの実装差異(例:文字列比較の照合順序、データ型の互換性、トランザクションの分離レベル)に注意する。
まとめ
リレーショナルモデルは、データを数学的に厳密に扱うための強力な枠組みであり、現代の多くのデータベースシステムの基礎となっています。一方で、実装であるSQLデータベースは実用性・互換性の観点からモデルの一部を拡張・変更しており、設計者や利用者は理論と実装上の違いを理解したうえで運用やスキーマ設計を行う必要があります。


リレーショナルモデルに基づくデータベースの例の図。


リレーショナルモデルでは、関連するレコードは「キー」で結ばれます。
質問と回答
Q:データベース管理のためのリレーショナルモデルとは何ですか?
A:データベース管理のための関係モデルとは、一階述語論理に基づくデータベースモデルです。
Q:データベース管理のための関係モデルは誰が、いつ提案したのですか?
A:エドガー・F・コッドが1969年に提唱したデータベース管理のためのリレーショナルモデルです。
Q: データベースのリレーショナルモデルでは、データはどのように表現されるのですか?
A: データベースの関係モデルでは、すべてのデータはタプルで表現され、関係でグループ化されます。
Q: 関係モデルで構成されたデータベースは何と呼ばれていますか?
A: 関係モデルで構成されたデータベースは、関係データベースと呼ばれます。
Q:リレーショナルモデルの目的は何ですか?
A: 関係モデルの目的は、データとクエリを指定するための宣言的な方法を提供することです。
Q: ほとんどのリレーショナル・データベースはどのような言語を使用していますか?
A: ほとんどのリレーショナル・データベースは、SQLデータ定義およびクエリ言語を使用しています。
Q: テーブル、テーブルの内容、キー制約、その他の制約、SQLクエリは、リレーショナルモデルにおける述語とどのように対応しますか?
A: 関係モデルでは、SQLデータベーススキーマのテーブルが述語変数に、テーブルの内容が関係に、キー制約、その他の制約、SQLクエリが述語に相当します。