2005年 9月 1日 基準編-11 対照表 >> 目次にもどる
2010年 8月 1日 補遺  

 

 対照表は、T字形 ER手法を、はじめて公 (おおやけ) にしたとき、最大の非難を浴びた点である。そして、いまでも、物議を醸している点である。

 T字形 ER手法は、(コッド 関係 モデル を起点にして、) 以下の前提に立って、作られている。

 (1) 「主語-述語」 形式を使って、実体主義を前提にする (主体を、まず、認知する)。
 (2) (主語であれ、述語であれ、) null を認めない。
 (3) (命題論理は、主語間の関係を記述できないので、) 「関係の論理 (2項関係)」 も使う。
 (4) 「関係」 を数学的な直積集合として考えない。
 (5) 関係の対称性・非対称性を意識的に記述する。

 それらを前提にすれば、「resource」 どうしのあいだには、対照表を作る。対照表は、数学的に言えば、主体集合の集合である (「集合の集合」 である)。コッド 関係 モデル の正規形は、単純定義域とされるので、コッド 関係 モデル の観点に立って、対照表を検討すれば、対照表は 「非正規形」 である。その点を、「黒本」 では、以下のように認めている。

        DOA の一派および OOA の一派が、「対照表」 を 「データ の冗長性」 である、と非難したが、
        コッド 流の データ 正規化から判断すれば、そうであるが、...

 対照表は、コッド 関係 モデル の観点に立てば、複合定義域であって、正規形ではない。
 対照表には、以下の 2つの性質がある。

  (1) 2項関係が、3項態となる。(すなわち、3項関係が、新たな主体を作る。)
  (2) 構成表である。

 (1) は、(「F-真」 を示す) 「event」 として、認知される主体である。すなわち、「集合の集合」 が、新たな 「主体」 を指示する。しかし、その主体には、認知番号が付与されていない。「オブジェクト 指向による分析・設計」 を謳っている人たちは、少なくとも、対照表が 「集合 オブジェクト」 であることを気づいても良さそうなのだが、、、。対照表は、そもそも、「集合 オブジェクト」 を意識して作られた。したがって、正直言って、「オブジェクト 指向による分析・設計」 を謳っている人たちが (対照表を好意的に迎えることはあっても、) 対照表を非難することを、小生は思いだにしなかったのだが。

 T字形 ER手法では、(単純定義域の entity を起点にして構成される) 「対照表」 「対応表」 「再帰表」 は、いずれも、「集合 オブジェクト」 か 「組 オブジェクト」 として構成されている。

 1つの手法を使って、データ 設計と事業解析と アルゴリズム I/O 化を、同時に実現しようとすれば、そういう やりかた (「entity を セット に翻訳する正規形」 と 「オブジェクト」 の混成) をするしかなかった。 □

 



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

 「対照表」 は、「和集合」 です──すなわち、f (x, y) を ひとつの集合として考えることができます。あるいは、ZF の公理系のなかの 「対の公理」 「和集合の公理」 「置換公理」 を使って、ひとつの集合として考えることができます。そして、その 「和集合 (集合を メンバー とする集合)」 に対して、性質 f (x) を認めることができれば──TM では、entity を並べるための性質として 「日付」 を考えているので、「和集合」 に対する f (x) として 「日付」 を考えれば──、「和集合 (集合を メンバー とする集合)」 を ひとつの 「事態」 として考えることができます。
 ただ、「対照表」 の 「解釈」 について、TM では、以下の制約を置いています。

    「対照表」 が真 (事実的な F-真) であるのは、その性質として、「日付」 が帰属しているか、
    あるいは、「日付」 を仮想したいとき、そして、そのときに限る。

 そのときに限り、「対照表」 は、F-真であって、なんらかの 「事態」 を指示します。
 どうして、このような制約規則を置いたかと謂えば、「対照表」 は、もし、F-真であるとき──実 データ としての 「日付」 が存在する場合を除けば──、「event」 とも 「resource」 とも、いずれでも 「解釈」 できるからです。この点については、本 ホームページ の 488ページ [ 対照表の性質 (構文論と意味論)] を参照してください。

 そもそも、「対照表」 を構成するようにした理由は、null に対応するためでした。
 たとえば、コッド 正規形として、以下を考えてみます。

    { 従業員番号、従業員名称、・・・、部門 コード (R) }.

 「従業員」 と 「部門」 との写像では、まず、全域関数が考えられています──すなわち、すべての従業員は、かならず、しかじかの部門に対応する、と。しかし、「配属されていない」 従業員も存在するでしょう──すなわち、写像が部分関数になる、ということ。その対応の 「場合分け」 を考えるために──すなわち、2項関係では、4つの可能態 { (T, T), (T, F), (F, T), (F, F) } が生じるので──、「真理値表」 として 「対照表」 を導入したのが、そもそもの動因でした。null は 「値が充足されていない状態」 であって、モデル 上、「真」 を問えないので、null を除去することが そもそもの目的でした。null の使用を認めるのであれば、4値 ロジック を使わなければならないのですが──コッド 氏は、それを薦めていましたが──4値 ロジック は 「使いにくい」 ので、私は、古典的な 2値 ロジック (真か偽かを問える ロジック) を使いたかった。

 「対照表」 が 「真理値表」 として作用して 2項の値が 「真」 であるときに、いったい、どのような現実的事態を指示するのか──言い換えれば、「集合の集合」 (という形式となる 「和集合」) を第一階の述語で対応するためには、どうすればいいのか──が論点になるのです。そのために、私は、前述した 「『解釈』 の制約規則」 を置いた次第です。





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