2023年 7月15日 「2.15 ヌル の論理否定 (NOT NULL) は...」 を読む >> 目次に もどる


 Null は、値が充足されていない状態であって、次の 2つの (いずれかの) 状態を意味しています──

  (1) undefined (値は存在しない未定義)

  (2) unknown (値は存在するが未知数)

 3値論理における null の規約は特に次の 3点に注意してください (以下、true と null を それぞれ T と N を使ってあらわします)──

  (1) N の論理的否定は N である (¬N = N)。

  (2) T かつ N は、N である (T ∧ N = N)。

  (3) T または N は T である (T ∨ N = T)。

 3値論理では、N を否定しても N なのです。(*)
 もしヌルを値と同じように演算の対象とするのならば、未定義 (undefined) と未知数 (unknown) に切り分けて、真・偽・未定義・未知数という4 つの 「意味」 を前提にした 4 値論理を使うべきです。リレーショナル・データベース の生みの親である E.F. コッド は、数学者だったので、当然ながら、リレーショナル 代数演算では 4値論理を推奨していました。ただ、現在 マーケット に流布している リレーショナル・データベース の プロダクト および コンピュータ 言語は、3値論理 (真、偽、null) を前提にしています。それゆえ、プログラマ や SE のなかには、ヌル (値が充足されていない状態) を否定すれば、値が充足されているという状態を指示するというふうに考え違いしている人たちが多い。あるいは、ヌル が演算対象になるようなときには、「0」 (ゼロ) などのような値を充填しているようなことも私は聞き及んでいますが、たとえ 構文論上 そのような措置で ヌル (ヌル の否定) を回避できたとしても、意味論上 「0」 は F-真を表している訳ではない。3値論理上、ヌル の扱いには、くれぐれも注意を払ってください。

 TM は、デイヴィドソン 氏の次の T文を前提にしています (2.6 を復習してください)──

    言明 「p」 が真であるのは、時刻 t において、事態 p と対応するときに限る。

 したがって、TM は、モデル が F-真を満たすには、モデル の構造と実際の事業過程の構造が一致していることを条件として、2値論理を前提にしています。2値論理では、ヌル を扱わないので、当然ながら、ヌル については然るべき対応を施しています (詳しくは、第 8章 「クラス」 で後述します )。形式的構造 (モデル) では──「形式的」 というのは 「論理的」 と同じ意味ですが──モデル の前提となっている 「論理」 を認識して、しかるべき対応をしなければならないということに配慮してください。

 
(*) 「SE のための モデル へのいざない」、佐藤正美、ソフト・リサーチ・センター、2009年。
  論理上の null の扱いについては、177ページ を参照してください。

 




  << もどる HOME すすむ >>
  目次にもどる