T字形ER手法でnullを認めない理由(1)

T字形ER手法が null を認めない理由は、P-80「データの関係(null値と対照表)」に書かれている。

「ヌル」を適切に扱うためには、2値(真および偽という2つの値)を前提にしないで、
3値(真・偽・maybe)あるいは4値(真・偽・unknown・undefined)を前提にした
「様相の論理(modal logic)を使わなければならない。

もし、プログラムのアルゴリズムが2値を前提にして作成されているなら、「ヌル」
を認めてはいけない。

2値を前提にしてRDBを使うなら、「ヌル」を温存することは、「SQLの致命的欠点」となる。

上記に関して、理解したいポイントは以下の2つ。

  1. 3値・4値理論で登場する真理値 maybe, unknown, undefined とはどういう意味の値か。
  2. 我々が書くプログラムのアルゴリズムは「2値を前提にしている」のかどうか。すなわち、nullを認めても大丈夫なのかどうか。


補助線として、プログラム(=SQL・ホスト言語の両方を含む)とnullとの関係の、考えどころを整理する。
nullの扱いについて知っていなくてはならないポイントには、以下の3つがある。

  • 論理演算 ... nullを AND とか OR のオペランドにしたらどうなるか
  • 比較演算 ... nullと何かを大小比較したらどうなるか
  • 算術演算 ... nullを足したり引いたりしたらどうなるか

この3点について、SQLとホスト言語の両方がそれぞれどう扱っているか---つまり

SQL ホスト言語
論理演算
比較演算
算術演算

上記6つの?について、nullがどう扱われているかを理解しないと、nullを安全に排除することも、あるいは null を「上手に使う」こともできない。

続く。