D (データベース言語仕様)

D は、クリス・デイトとヒュー・ダーウェンが著書 (共著) "The Third Manifesto" で提案した、関係データベースのデータベース言語が満たすべき要件の集合である。
D自体はデータベース言語ではない。
デイトとダーウェンは、2008年現在で広く使われているデータベース言語SQLを、関係モデルを正確に実装していないとして、批判している。
Tutorial D は、"The Third Manifesto" で説明され使われている、Dの抽象的な実装である。
Dの実装は、Tutorial D と必ずしも同じ構文である必要はない。
Dを正しく実装するために必要なことは、その実装が、Dで規定された機能のセットをもっていることと、デイトとダーウェンが賢明ではないと考えている機能のセットを排除していることである。
Dの正しい実装は、関係データベースの範囲外に位置づけられる付加的な機能をもっていても良い。
Dは、プログラミング言語Dとは関係ない。
プログラミング言語Dは、汎用的なプログラミング言語である。
Tutorial D.
Tutorial D は、"The Third Manifesto" で説明され使われている、Dの抽象的な実装である。
Tutorial D は、Dがどのようなものであるかを示すことを目的としており、また教育用途である。
構文.
Tutorial D の構文を、関係代数の演算子ごとに説明する。
なお R と S を関係とする。
また A と B を R の属性とする。
和.
RとSの和 R ∪ S は、次のように記述する。
 R UNION S
差.
RとSの差 R － S は、次のように記述する。
 R MINUS S
交わり.
RとSの交わり R ∩ S は、次のように記述する。
 R INTERSECT S
制限.
Rに対する A = 1 を条件とする制限 (選択) R[A = 1] は、次のように記述する。
 R WHERE A = 1
射影.
Rの射影 R[A,B] は、次のように記述する。
自然結合.
RとSの自然結合 R formula_1 S は、次のように記述する。
 R JOIN S
準結合.
RとSの準結合 (半結合) R formula_2 S は、次のように記述する。
 R MATCHING S
商.
RとSの商 R ÷ S は、次のように記述する。
 R DIVIDEBY S
属性名変更.
Rの属性名をBからXに変更する属性名変更 R[B→X] は、次のように記述する。
 R RENAME ( B AS X )
拡張.
Rに B * 2.54 で計算される値をもつ属性を追加して、その属性の名前をXとする拡張は、次のように記述する。
 EXPAND R ADD (B * 2.54 AS X)
要約.
Rに対してその属性AとAごとのBの最大値から構成される関係を生成する要約は、次のように記述する。
 SUMMARISE R PER ( R{A} ) ADD ( MAX(B) AS X )
Tutorial D が備えていない構文.
Tutorial D では、直積 (積、デカルト積) は直接サポートされない。
Tutorial D では、外結合 (外部結合) に相当する演算子は存在しない。
Industrial D.
Tutorial D が学術のための言語であるのに対し、実務のために使われるDの正確な実装は Industrial D と呼ばれる。
実装.
Dの最初の実装は D4 であり、C#で開発された。
D4は、Alphora社の関係データベース管理システム (RDBMS) Dataphor でデータベース言語として採用されている。
他の実装としては、Rel、Opus、Duro、Dee などがある。
これらの実装はすべて Industrial D と位置づけられている。