T字形ER手法でnullを認めない理由(1)
T字形ER手法が null を認めない理由は、P-80「データの関係(null値と対照表)」に書かれている。
「ヌル」を適切に扱うためには、2値(真および偽という2つの値)を前提にしないで、
3値(真・偽・maybe)あるいは4値(真・偽・unknown・undefined)を前提にした
「様相の論理(modal logic)を使わなければならない。
もし、プログラムのアルゴリズムが2値を前提にして作成されているなら、「ヌル」
を認めてはいけない。
上記に関して、理解したいポイントは以下の2つ。
- 3値・4値理論で登場する真理値 maybe, unknown, undefined とはどういう意味の値か。
- 我々が書くプログラムのアルゴリズムは「2値を前提にしている」のかどうか。すなわち、nullを認めても大丈夫なのかどうか。
補助線として、プログラム(=SQL・ホスト言語の両方を含む)とnullとの関係の、考えどころを整理する。
nullの扱いについて知っていなくてはならないポイントには、以下の3つがある。
- 論理演算 ... nullを AND とか OR のオペランドにしたらどうなるか
- 比較演算 ... nullと何かを大小比較したらどうなるか
- 算術演算 ... nullを足したり引いたりしたらどうなるか
この3点について、SQLとホスト言語の両方がそれぞれどう扱っているか---つまり
SQL | ホスト言語 | |
---|---|---|
論理演算 | ? | ? |
比較演算 | ? | ? |
算術演算 | ? | ? |
上記6つの?について、nullがどう扱われているかを理解しないと、nullを安全に排除することも、あるいは null を「上手に使う」こともできない。
続く。