T1#research#award

Codd の関係モデル論文 ── データベースに数学的基礎を与える

IBM Research Almaden の航空写真 ── Codd が在籍した IBM サンノゼ研究所の後身
出典Dicklyon (Wikimedia Commons) · CC BY-SA 4.0 · Commons で見る

メタデータ

日付
年代
1970s
Tier
T1
出典数
09
関連項目
02
Tags
#research#award

1970年6月、 IBM サンノゼ研究所(現 IBM Research Almaden) の研究員 Edgar Frank Codd は、 ACM の会報誌 Communications of the ACM 第13巻6号 377–387ページに、 のちにコンピュータ史上もっとも引用される論文の一つとなる「A Relational Model of Data for Large Shared Data Banks」を発表した。

それは「データベース」と呼ばれる新しい技術ジャンルに、 数学的な基礎を与えた瞬間だった。

1970 年当時のデータベース ── 木とポインタの世界

論文以前、 大規模データを扱う主な仕組みは二系統あった。 一つは IBM の IMS に代表される 階層型 DBMS で、 親子関係をもつ木構造でレコードを保持する。 もう一つは Charles Bachman が設計した IDS とその後継 CODASYL/Network DBMS で、 レコード同士をポインタで結ぶグラフ型である。

どちらも問題は同じだった。 アプリケーションは、 データが物理的にどう格納されているか ── 木のどのノードか、 どのポインタを辿るか ── を知っていなければクエリが書けなかった。 結果、 ストレージのレイアウトを変えるとアプリケーションも書き直すことになる。 論文は冒頭の要旨から、 この一点を突く ── 「大規模データバンクの将来の利用者は、 データが機械の中でどう構成されているか(内部表現) を知らなければならない状態から、 保護されなければならない」。

論文の主張 ── 集合と論理だけで十分だ

Codd の論文は11ページ。 主張は二つに集約される。

第一の主張:データはすべて「関係(relation)」、 つまり数学的な集合として表現できる。 関係は属性(カラム) の組で定義され、 そこに属するタプル(行) の集合になる。 ファイル・木・ポインタ網ではなく、 集合の集まり ── これが提案された抽象である。

第二の主張:関係に対する操作は、 集合演算と一階述語論理だけで表現できる。 1970年の論文が定義する演算は5つ ── 置換(permutation)、 射影(projection)、 結合(join)、 合成(composition)、 制限(restriction) である。 そのうえで Codd は、 関係が正規形にあるなら一階の述語論理で足りるとして、 「応用述語論理にもとづく universal data sublanguage」 の可能性を提示した。

ここは誤解されやすい。 「関係代数」「関係計算」という用語は、 この1970年の論文にはまだ出てこない。 両者を名づけ、 任意の計算式を代数式へ機械的に変換できること(関係完備性) を示したのは、 2年後の論文 "Relational Completeness of Data Base Sublanguages"(Courant Computer Science Symposia 6、 1972) である。 のちの SQL の SELECT-FROM-WHERE は、 この二本立てのうち計算(calculus) 側の記法に近い。

この二点から自然に導かれる帰結が データ独立性(data independence) である ── 論文自身が §1.2 で、 既存システムのデータ記述テーブルを「データ独立性という目標への大きな前進」と評価し、 そのうえでなお残る依存(順序依存、 索引依存、 アクセスパス依存) を数え上げていく。 アプリケーションは「何のデータが欲しいか」を集合と論理の言葉で書くだけでよく、 DBMS 側がそれを物理的なアクセスパスへと最適化する。 ストレージのレイアウトを変えても、 クエリは書き換えなくていい。

ACID への前段

Codd の論文自体には ACID(原子性、 一貫性、 独立性、 永続性) という言葉は出てこない。 出てくるのは主キーと外部キーで、 レコード間の相互参照を利用者側の言葉で宣言する枠組みがここで用意された(正規化理論の中核である関数従属は、 1970年の論文にはまだ無い。 翌1971年以降の Codd 自身の論文で展開される)。

その上に整合性の保証を積んだのが System R である。 トランザクション処理を担った Jim Gray が1981年の "The Transaction Concept: Virtues and Limitations" で原子性・一貫性・永続性を名づけ、 そこに独立性を加えて ACID という頭字語にしたのは、 1983年の Theo Härder と Andreas Reuter だった。

System R は、 Codd の論文を読んだ IBM サンノゼの研究グループが 1974 年から構築した実装で、 SEQUEL(後の SQL) 言語、 二相ロック、 リカバリログ、 コストベースのオプティマイザ ── 現代の RDBMS の構成要素はおおむねここに源流をもつ。 ただし関係モデルの実装は System R だけではない。 System R の公開論文を読んだ Michael Stonebraker と Eugene Wong は、 1973 年からバークレーで INGRES を並行して進めており、 その問い合わせ言語 QUEL は SQL より Codd の代数に忠実だったと評価されている。

なぜ IBM 本体は出遅れたか

歴史の皮肉というほかない事実がある。 関係モデルを発明したのは IBM だが、 それを最初に商品化したのは IBM ではない。

IBM 本体は、 主力製品 IMS(階層型 DBMS) への配慮から、 リレーショナル DBMS の製品化に慎重だった。 結果、 商用市場の先を越したのは、 1977年に Software Development Laboratories として創業し1979年に Relational Software, Inc. へ改称した会社 ── まもなく Oracle Systems Corporation となる、 のちの Oracle。 この改称年は Oracle 自身の年表が1982年、 二次資料の多くが1983年とし、 一致していない ── で、 同じ1979年に Oracle V2 を出荷している。 IBM 最初の商用リレーショナル製品 SQL/DS が DOS/VSE・VM/CMS 向けに出るのは1981年、 DB2 が MVS 向けに登場するのは1983年、 その一般提供は1985年だった。

Codd 自身は、 1970 年代を通じて IBM 内部で関係モデルの伝道を続けた。 1985年10月には Computerworld 誌に「Codd の 12 の規則」を発表し(実際には Rule 0 を含む13条ある)、 当時「リレーショナル」を名乗っていた製品の多くが本当はそうでないことを公然と批判している。

チューリング賞、 そして遺産

Codd は 1981 年、 ACM チューリング賞 を受賞した。 授賞理由は「データベース管理システムの理論と実践への根本的かつ継続的な貢献に対して」。

彼の論文から半世紀以上たった今、 世界のデータベース市場で支配的な座にあるのはすべて関係モデル系統の製品である ── Oracle、 Microsoft SQL Server、 IBM Db2、 MySQL、 PostgreSQL、 そしてクラウド時代の Snowflake や BigQuery に至るまで、 SQL という関係計算ベースの言語が共通語となっている。 2000 年代に「NoSQL」を名乗ったムーブメントですら、 結局は「リレーショナルではないが、 関係モデル的概念にどう向き合うか」を問う形で展開した。

Codd の 11 ページは、 ソフトウェア工学の歴史で、 数学的厳密さが現実の産業をどれだけ広く規定しうるかを示した稀有な例である。 「データはどう格納されているか」ではなく「データとは何か」を定義した瞬間 ── そこから 50 年以上、 業界はそのフレームの中で歩いている。

よくある質問

Codd の1970年の論文の題名は何か
「A Relational Model of Data for Large Shared Data Banks」です。Communications of the ACM 13巻6号、377–387ページに載りました。
この論文で「関係代数」は定義されたのか
されていません。「関係代数」「関係計算」という用語は1972年の続編 Relational Completeness of Data Base Sublanguages で導入されます。1970年の論文が定義したのは n 項関係と5つの演算です。
Codd はチューリング賞を受賞したのか
1981年に ACM チューリング賞を受賞しています。

出典

  1. 一次資料Edgar F. Codd — ACM A.M. Turing Award

    取得日: 2026-05-25

  2. 三次資料Edgar F. Codd — Wikipedia

    取得日: 2026-08-03

  3. 三次資料IBM System R — Wikipedia

    取得日: 2026-08-03

  4. 三次資料Ingres (database) — Wikipedia

    取得日: 2026-08-03

  5. 三次資料ACID — Wikipedia

    取得日: 2026-08-03

  6. 三次資料Relational model — Wikipedia

    取得日: 2026-08-03

最終更新:

共有