2005年11月 1日 基準編-15 アトリビュート の ヌル 値 (null) >> 目次にもどる
2010年10月 1日 補遺  

 

 アトリビュート の null は、相違の サブセット として扱う。

 Null は 2値 (「真」 および 「偽」 という 2値) を前提にすれば、構文論的には、「対象外」 として扱えば良い。ただ、モデル が、現実的世界を対象としているのであれば、意味論 (「モデル のなかの記号」 と 「現実的世界の事実」 との指示関係) を考慮しなければならない。そして、Null は、意味論的には、多義になる (「undefined」 と 「unknown」 という 2つの意味をふくんでいる)。

 モデル が、語意 (term、現実的事実との指示関係を示す記号) と文法 (語意を使って作られる文) を使って構成されるのなら、意味論上、null の多義は消去されなければならない。そのためには、以下の 2つの対応ができる。

  (1) Null を認めて、4値 (「真」、「偽」、「undefined」 および 「unknown」) の Logic を使う。
  (2) Null を、一切、認めない。

 コッド 関係 モデル は、(1) を前提にした。そして、T字形 ER 手法は、(2) を前提にした。
 「黒本」 では、null を、アトリビュート の語意の観点から非難して、アトリビュート の語意は、「innate」 を原義として、個体に帰属する性質は、「生まれながら (生得の)」 (inborn あるいは natural) という概念を援用している。すなわち、個体が、どのような可能的世界にあっても、つねに、「真」 として成立する性質を考えていて、実体主義的な考えかたを 「黒本」 は導入している。ただし、この 「innate」 という考えかたは、「黒本」 以後、使ってはいない。「論考」では、「innate」 という考えかたを否定して、事態に関与している人たちが、対象に帰属する 「性質」 を、どのようにして考えているかという点は、「ことばの使用」 のなかで示されるとしている。

 T字形 ER手法は、認知番号 (identifier) を使って、まず、個体を認知することを起点にしているので、実体主義的な考えかたをしている。したがって、認知された個体に 「帰属する性質」 という観点から判断すれば、性質のなかに、null を認める訳にはいかない。 Null は、相違の サブセット として扱い、消去される。 □

 



[ 補遺 ] (2010年10月 1日)

 しかじかの アトリビュート (性質) が、しかじかの個体 (entity) に帰属するかどうかを判断するのは、とても難しい。その判断は、ほとんど 「常識」 に委ねられることになるのですが、まずはとりあえず――なんらかの整えられた尺度で判断できると思わないで――、「常識」 に任せて、アトリビュート を個体に記入するしかないでしょうね。

 そして、TMD が一応作成されたら――すなわち、なんらかの 「形式的構造」 が構成されたら――、その 「構成」 (文脈) のなかで、それぞれの個体・それぞれの アトリビュート の ポジション を再検討します。というのは、一つの語の 「意味」 は、全体の文脈のなかでしか定立できないので。たとえば、以下の例 (会社 [ 個体 ] と資本金 [ アトリビュート ]) を考えてみてください。

  [ A 案 ]

  会社 entity
  { 会社コード、会社名称、資本金、・・・}.

 「資本金」 は、常識で考えて、授権資本のいちぶが払い込まれた状態なので、「会社」 の アトリビュート として考えますが、もし、この TMD で記述されている主体 (企業) が 「財務分析・信用調査」 を主たる事業としていれば、以下の 「解釈」 も考えられます。

  [ B 案 ]

  会社 entity
  { 会社コード、会社名称、・・・}.

  会社. 与信. VE
  { 会社コード (R)、資本金、・・・}.

 この 「解釈」 は、解析対象になっている 「事業」 の文脈のなかでしか判断できないでしょう。勿論、[ A 案 ] を 「形式的構造」 として実装して、「与信」 は──[ B 案 ] で VE として構成されている クラス 概念は──「会社」 に対する a logical view として アプリケーション・プログラム が生成してもいいでしょう。この判断が、構文論と意味論とのあいだで──「形式」 と 「意味」 とのあいだで──曖昧な [ 判断式がないということ ] 点です。

 さて、null は 「状態 (を示す形式)」 であって 「値 (形式に代入される数値)」 ではない、という点を理解していてください。したがって、本来、「状態」と「値」を比較することはできない、という点を理解していてください。そうであれば、null を認めるか (4値 ロジック もしくは 3値 ロジック) あるいは認めないか (2値 ロジック) のいずれの前提をとるかによって、モデル の公理系が当然ながら異 (ち) がってきます。

 ただ、null は、本エッセーで述べたように、意味論上、「undefined」と「unknown」 の 2つの 「意味」 を持っています。したがって、null を意味論上正確に扱うのであれば、4値 ロジック を使うのが適切です。あるいは、null を 「形式的構造」 から排除して 2値 ロジック を使うことも適正です。争点になるのは、3値 ロジック 上の null です。3値 ロジック において、null の演算は──特に、null に対する論理否定は──注意を払ってください。

 TM は、2値 ロジック を前提にしています。したがって、アトリビュート において null が生じる場合には、null を 「場合分け」 します。null の 「場合分け」 には、以下のいずれかの技術を使います。

 (1) サブセット
 (2) VE

 本 エッセー では、「サブセット を使う」 としていますが、VE を使う場合もあることを補足しておきます。





  << もどる HOME すすむ >>
  「T字形ER データベース設計技法」を読む