忍者ブログ
IT関係の小作人労働の日々の日記です。 最近データベースが好きです。 インフラ構築、DB構築、アプリケーション開発・・・何でも屋です。 何でもできそうで、何にもできない。

【データベースの知識】現代のRDBの原点!コッドの12のルール(Codd's 12 Rules)とは

リレーショナルデータベース(RDB)の基礎理論を考案した Edgar F. Codd(エドガー・F・コッド)博士が1985年に提唱した「コッドの12のルール(Codd's 12 Rules)」
「真のリレーショナルデータベース管理システム(RDBMS)とはどうあるべきか」を定義した指針であり、データベースの運用や基本設計、情報処理試験の理論問題においても極めて重要な概念となっている。

今回は、データベースを正しく管理・運用するためにRDBMSが備えるべき12の原則をわかりやすく整理した。


1. コッドの12のルール(RDBMSの要件定義)

コッド博士は、システムが独自の拡張や物理的な制約に頼らず、純粋に「リレーショナルモデル」としてデータの一貫性・独立性を保つために以下の12原則(および原則0である「完全なリレーショナル機能による管理」)を定めた。

  • ① 情報の表現原則(Information Rule)
    テーブル名や列名、制約といったメタデータを含め、データベース内のすべての情報は「表(リレーション)のセルに格納された値」として一元的に記録されなければならない。
  • ② アクセスの保証(Guaranteed Access Rule)
    すべてのデータ要素は、「テーブル名」「主キー(Primary Key)の値」「列(ドメイン)名」の組み合わせによって論理的に一意指定してアクセス可能でなければならない(物理アドレスやポインタの指定は不可)。
  • ③ NULLの統一的扱い(Systematic Treatment of Null Values)
    「値が存在しない(未知)」「適用不能」を表す NULL は、データ型に関わらず、システム全体で統一かつ体系的な方法で処理されなければならない。
  • ④ オンライン・アクティブ・カタログ(Dynamic Online Catalog)
    データベース構造を保持するカタログ(データディクショナリ)自体も通常のデータと同じ表形式で表現され、通常のSQL等のデータアクセス言語を使ってオンラインで照会できなければならない。
  • ⑤ 包括的なデータ言語の原則(Comprehensive Data Sublanguage Rule)
    データの定義(DDL)、ビューの定義、データの操作(DML)、整合性制約、トランザクション制御(COMMIT/ROLLBACK)などが、単一の明確に定義された言語(SQLなど)で完結して実現できなければならない。
  • ⑥ ビューの更新原則(View Updating Rule)
    理論的に更新可能なビューに対して更新(INSERT / UPDATE / DELETE)が発行された場合、RDBMSがそれを検知し、裏側にある実表(基底テーブル)に対して正しく更新処理を反映しなければならない。
  • ⑦ 高水準の挿入・更新・削除(High-Level Insert, Update, and Delete)
    データ操作言語は、一度の命令(クエリ)で1行ずつ処理するのではなく、複数の行(タプル/集合)をひと括りで集合処理できなければならない。
  • ⑧ 物理的データ独立性(Physical Data Independence)
    データの記憶形式やアクセスパス(インデックス構造やファイルの配置場所など)といった物理的な変更を行っても、アプリケーションプログラムのコードに影響を与えてはならない。
  • ⑨ 論理的データ独立性(Logical Data Independence)
    テーブルの分割・結合など、データベースの論理構造を変更した場合でも、既存のアプリケーションプログラムへの影響を最小限に抑えられなければならない(ビュー等の活用)。
  • ⑩ 整合性制約の独立性(Integrity Independence)
    主キー制約や外部キー制約などのデータ整合性制約は、アプリ側のプログラム内に記述するのではなく、RDBMS内のカタログに直接定義・保持されなければならない。制約が変更されてもアプリ側に影響を与えない。
  • ⑪ 分散の独立性(Distribution Independence)
    データベースが複数のサーバやネットワーク上に分散配置されたとしても、アプリケーション側からはあたかも単一のローカルデータベースを操作しているように見えなければならない(位置の透過性)。
  • ⑫ 規約無効化の否定(Non-Subversion Rule)
    RDBMSに低水準(レコード単位など)のインターフェースが存在する場合でも、その経路を使ってRDBMSに定義された整合性制約やセキュリティ規約を回避・破壊できてはならない。

2. まとめ:現代RDBMSにおける位置づけ

コッドの12のルールは、SQLデータベースの理想型を示した厳格な基準である。現実の主要なRDBMS(Oracle、PostgreSQL、MySQL、SQL Serverなど)であっても、これら12のルールを完全(100%)に満たしている製品は少ない。

しかし、「物理データからの独立」「集合操作」「整合性制約のRDBMS側での一元管理」といった根幹のコンセプトは、現代のデータベース設計やアプリケーション開発においても変わらない基礎知識として息づいている。

【データベース設計・運用のチェック項目】
アプリケーション側に整合性チェックのロジックを抱え込みすぎていないか?(ルール10)
物理的なインデックス追加・変更がアプリ側に波及しない構造になっているか?(ルール8)
NULLの判定ロジックがシステム全体で統一されているか?(ルール3)
PR