関係モデル
エドガー・F・コッド自身は、1970年に関係モデル(リレーショナルモデル)を公表して数年後に、欠損情報を扱うために関係モデルの三値論理バージョンを提唱した。そして論文 The Relational Model for Database Management Version 2 (1990) における関係モデルの四値論理バージョンの提唱へとさらに一歩踏み出した。しかしこれらが実装されることは全く無かった。その理由はおそらくそのモデルが複雑であったためであろう。
SQLのNULLの概念は三値論理システムの一部をなすものと想定されていた。しかしSQL標準とその実装に含まれた論理的齟齬によりすぐに崩壊した。 先の#SQL標準の節を参照。
しかし現実には、一つの請求書は複数の注文に対して発行することができる。また注文無しの請求書が実際に発行されることもあろう。さらに、注文関係変数は請求書番号属性をもつ。これは各々の注文はそれぞれ対応する一つの請求書をもつことを意味する。
しかし現実世界ではこれは必ずしも真ではない。一つの注文が複数の請求書を通して発行される場合もある。また請求書無しで支払いを行うこともあるであろう。すなわち、複数の請求書が一つの注文と対応することがあり、複数の注文が一つの請求書に対応することがある。これは注文と請求書の間に「多対多」の関連があるということである(「特定の関連は無い」ともいう)。この関連を関係データベースで表現するために、新しい関係変数を導入する必要があるであろう。
この新しい関係変数の役割は注文と請求書の関連を指定することである:
注文請求書(注文番号、請求書番号) これを表にすると、以下のようになる。 注文請求書表
ここで、注文関係変数は注文請求書関係変数との間に、注文関係変数と顧客関係変数の間の関連と同じく、一対多関連がある。 特定の注文に対する全ての請求書を検索したい場合、
注文関係の 注文番号 は注文請求書関係の 注文番号 と等しく
注文請求書関係の 請求書番号 は請求書関係の 請求書番号 と等しい
という条件をつけて全ての請求書を検索することができる。