T1#standard
最初の SQL 標準 ── ANSI X3.135-1986 と ISO 9075:1987
メタデータ
- 日付
- 年代
- 1980s
- Tier
- T1
- 参照年表
- データベースの歴史
- 出典数
- 09
- 関連項目
- 00
- Tags
- #standard
1986年10月16日、米国規格協会(ANSI)は『American National Standard for Information Systems — Database Language — SQL』を、規格番号 X3.135-1986 として承認した。Chamberlin と Boyce の SEQUEL 論文から12年。IBM の研究試作の問い合わせ言語が国家規格になり、1年を待たずに国際規格にもなった。
「SQL はいつ標準化されたのか」という問いへの答えは、この日付である。以下では、規格が何を定め、誰が書き、何を書き残さなかったのか、そしてそれがなぜ重要だったのかを見ていく。
X3.135-1986 を書いたのは誰か
規格の前書きは、出自をはっきり記している。起草したのは データベース技術委員会 X3H2 で、情報処理システムに関する認定規格委員会 X3 が承認したプロジェクト 363D として進められた。事務局はコンピュータ・事務機器製造業者協会(CBEMA)。プロジェクトの目的は、SPARC 文書 81-689 からの引用として、関係データベース管理システムへのインタフェースの機能について標準を作ること、その機能は関係データベースの定義・問い合わせ・変更に使われるもの、と書かれている。
規格に印刷された名簿では、X3H2 の委員長は Donald Deutsch、副委員長は Oris Friesen、書記は Michael Gorman、国際担当は Leonard Gallagher である。
委員会が標準にした文書は、白紙から書かれたものではなかった。1995年の System R 同窓会で Jim Gray は、委員会は独自の関係言語を作ろうとして行き詰まっており、そこへ Phil Shaw ── X3H2 の名簿に名前がある ── が IBM の SQL マニュアルに近いものを持ち込んだ、と回想している。Chamberlin はこれに補足して、その文書の大部分は IBM の Bob Engles の仕事で、Engles は System R を調べ、それが実際にどう動くかを「warts and all(欠点も含めてそのまま)」形式的に書き下ろしたのだと語った。同窓会記録に付された Roger Miller の注記は、Engles の「SQL Control Document」を ANSI/ISO の SQL 標準の土台と呼んでいる。標準化委員会はそれを追認し、Chamberlin の言葉では、欠点も全部そのまま残した。
1986年の規格が定めたもの
適用範囲の条項は、2つの言語を定義する。データベースの構造と整合性制約を宣言するスキーマ定義言語 SQL-DDL と、アプリケーションプログラムの手続きと文を宣言するモジュール言語およびデータ操作言語 SQL-DML である。
| 項目 | X3.135-1986 の規定 |
|---|---|
| 水準 | 完全な言語を Level 2、その定められた部分集合を Level 1 とする |
| ホスト言語 | 付属書で COBOL・FORTRAN・Pascal・PL/I への埋め込み構文を規定 |
| データ操作 | DECLARE CURSOR、OPEN、FETCH、CLOSE、INSERT、探索型と位置付けの UPDATE・DELETE、SELECT、COMMIT、ROLLBACK |
| 問い合わせの句 | FROM、WHERE、GROUP BY、HAVING、副問い合わせ |
| 状態の通知 | SQLCODE パラメータ |
| 目的 | 適合する実装のあいだで、データベース定義とアプリケーションプログラムを移植可能にする手段 |
付属書は、SQL の文が「それ以外は標準どおりのアプリケーションプログラム」の中に含まれることを前提にしている。1986年の規格にとって SQL は、人がプロンプトに打ち込むものであると同時に、COBOL や PL/I のプログラムが抱えて運ぶものだった。
書かれなかったもの
適用範囲の条項に付いた注記は、本文のどこよりも多くを語る。追加の言語仕様は後の追補で扱う予定だとして、検討中の項目を挙げているのだ。参照整合性、トランザクション管理の拡張、処理系定義の規則の一部の明確化、文字処理の拡張、各国文字セットである。
つまり最初の SQL 標準には外部キーが無かった。ある表を別の表と矛盾なく保つための関係モデルの仕組みが、入っていなかったのである。
Gray の語るその後は、取引の話である。国際側は米国の文書を受け入れる代わりに外部キーの設計を自分たちで書く、という取引が成り、それが「basically SQL ’89(実質的に SQL ’89)」になったという。ISO のカタログは結果を淡々と示している。第2版 ISO/IEC 9075:1989 の題名は『Database Language SQL with integrity enhancement』、発行は1989年4月、120ページである。
ANSI は1986年、ISO は1987年
2つの規格番号は「SQL-86」の一語にまとめられがちだが、別々の文書で、日付も違う。ISO は ISO 9075:1987『Information processing systems — Database language — SQL』を第1版、1987年6月発行として登録しており、現在は廃止され1989年版に置き換えられている。ANSI の文書のほうは、連邦情報処理標準 FIPS PUB 127 によって米国連邦政府での使用に採用されたと記している。
批判、そして是正
規格が出たとき、SQL の欠点はすでに批判の対象になっていた。C. J. Date の「A Critique of the SQL Database Language」は1984年11月の ACM SIGMOD Record に載っている。Chamberlin 自身の回顧も率直で、初期の SQL は主キーと参照整合性を欠き、名前付きの表の代わりに副問い合わせを置くことができず、問い合わせ結果の列に名前を付ける手段も無かったと認めている。1995年の同窓会では、System R から受け継いだ非直交的な規則の例として、UNION と GROUP BY を同時に使えないことを挙げ、特別な理由は無く、誰かが作る時間が無かっただけだと語った。
Chamberlin によれば、これらはすべて 1992年版 で是正された。ISO の記録では ISO/IEC 9075:1992 の発行は1992年11月、587ページ ── 1989年版のほぼ5倍である。
標準があることの意味
標準は SQL の実装を同一にはしなかった。Chamberlin は、ベンダーには標準の異なる部分集合を実装し、独自機能を入れる困った傾向があったと書く。標準がしたのは、彼の評価では、ベンダーが実装・ツール・教材を競い合える共通の生態系を用意し、利用者に単一のソフトウェアベンダーへ依存せずに済むという安心を与えたことだった。米国標準技術研究所(NIST)は適合性試験のスイートを作り、1988年から1996年にかけて多くの SQL 製品がそれで検証された。
その安心こそが商業上の要点だった。Oracle や DB2 のような商用実装は、Chamberlin の年代づけでは1970年代末から1980年代初めに現れている。1986年10月以降、「SQL データベース」を選ぶ買い手は、その言葉が何を意味するかを定めた文書を指し示せるようになった。
文書は膨らみ続けた。1995年の同窓会の時点で、Chamberlin は ISO の SQL 標準を約1600ページと述べている。中核部分の現行版 ISO/IEC 9075-2:2023 は第6版である。この年表で後に続く関係データベース ── MySQL、PostgreSQL、SQLite ── はいずれも、この文書が最初に固定した言語の方言を話している。
よくある質問
- SQL が最初に標準化されたのはいつか
- 1986年10月16日に ANSI が X3.135-1986 として承認したのが最初です。国際規格 ISO 9075:1987 は1987年6月に発行されました。
- SQL-86 に外部キー(参照整合性)はあったのか
- ありません。規格自身が、参照整合性を後の追補で扱う予定の項目に挙げていました。外部キーは1989年4月の ISO/IEC 9075:1989(integrity enhancement 付き)で加わります。
- SQL 標準を作ったのは誰か
- ANSI の X3 委員会のもとにあるデータベース技術委員会 X3H2 です。1986年版の委員長は Donald Deutsch でした。土台には IBM の SQL の仕様文書がありました。
出典
承認日1986年10月16日、X3H2 と project 363D、SPARC 81-689 の目的文、委員名簿、2つの Level、4言語の埋め込み構文、参照整合性を後回しにした注記
一次資料ISO 9075:1987 — Information processing systems — Database language — SQL
発行1987年6月、第1版、廃止済み、後継は ISO/IEC 9075:1989
一次資料ISO/IEC 9075:1992 — Information technology — Database languages — SQL
発行1992年11月、第3版、587ページ、JTC 1/SC 32
NIST の適合性試験(1988〜1996年)、1992年版による欠陥の是正、ベンダーごとの部分実装と独自拡張
Jim Gray と Chamberlin による標準化の内幕の回想、Bob Engles の「SQL Control Document」
三次資料SQL — Wikipedia
最終更新: