2006年 1月16日 作成 サブセット と 「管理の視点」 >> 目次 (テーマ ごと)
2010年 2月16日 補遺  


 
 ● 第一階述語論理と サブセット


 TM では、データ 演算は、第一階述語論理の枠内で実行される。すなわち、「実 データ と集合」 を対象として、「集合の集合」 を対象としていない。しかし、いっぽうで、TM では、サブセット 概念が導入されている。サブセット 概念が導入されているので、TM が クラス 概念を導入しているかのように誤解されている。

 TM では、実 データ を対象にして、それらの集合は、まず、認知番号を判断規準にして作られる。すなわち、集合 (セット 概念) を、まず、作る。したがって、「実 データ と集合」 が 「構造」 の単位とされる。それらの集合が周延しているかどうかという点を検証するために、サブセット 概念を導入した。

 TM では、サブセット は、区分 コード を判断規準して作られる。区分 コード は、管理過程のなかで、事実的対象 (enity) に対して導入された 「管理の視点」 である。すなわち、(たとえば、1つの対象に対して、複数の区分 コード が導入されていれば、) 1つの対象に対して、様々な管理視点が導入されている。

 サブセット は、数学上、セット に対する 「分割と細分」 を示す概念・技術である (432 ページ を参照されたい)。この 「分割と細分」 が、管理過程上、1つの管理対象 (entity) に対して導入された管理視点 (区分 コード) に対応する。

 
 ● 「管理の視点 (区分 コード)」 と 「データ 構造 (サブセット)」


 TM では、集合は、「実 データ と、それらの集合」 として作られる。そして、集合が 「周延」 しているかどうか (正しい集合になっているかどうか) ということを検証するために、実 データ と集合のあいだに、サブセット 概念を導入した。

 サブセット は、上述したように、区分 コード (管理の視点) を前提にして作られる。言い換えれば、「管理の視点」 が、データ 構造に対して、妥当かどうかという点を検証するために、サブセット を導入したのである。
 TM が手本とした コッド 関係 モデル では、区分 コード を サブセット として考えて、セット の妥当性を検証する手続きはない。サブセット は、コッド 関係 モデル を実地に適用する際に、TM が工夫した点の 1つである。というのは、実地の データ 設計では、サブセット──周延していない サブセット── が プログラム の 「複雑性 (cyclomatic complexity)」 を増大することに気づいたから。

 したがって、サブセット は、「管理の視点」 が 「データ 構造」 として、そのまま適用できるかどうかを検証するために導入されたのであって、クラス 概念を意識して導入されたのではない。



[ 補遺 ] (2010年 2月16日)

 まず、本 エッセー のなかの間違いを訂正します。間違いは、次の文です。

    サブセット 概念が導入されているので、TM が クラス 概念を導入しているかのように誤解されている。

 TM は、クラス 概念を導入しています。TM の体系のなかで、「クラス」 という語は出てこないのですが、「クラス」 を使わないと──正確に言えば、「関数のクラス (ファンクター)」 を使わないと──、HDR-DTL を説明することができない。TM そのものではないけれど、TM’ では クラス 概念を使っています。TM’ のなかで使われる 「スーパーセット」 は クラス 概念です──ただし、「スーパーセット」 は、その 「性質」を──T之字の記法では、右側のこと──記述しない [ あくまで 「概念的」 に表記しているだけです ]。そして、「スーパーセット (クラス)」 と 「セット」 との関係は、「セット」 と 「サブセット」 の関係として翻訳しています。

 では、どうして、クラス を基底にして体系を構成しないのかと言えば、クラス が上位の クラス を持ったときに、上位の クラス が、もし、演算対象になれば、第二階の述語を扱うことになるので第二階の述語論理を使わなければならない。しかし、TM は、「実 データ と、その集合」 を対象にした第一階の述語論理を前提にして体系を構成しているので、第二階の ロジック を入れたくない、というのが本音です──というのは、第二階の ロジック で体系を構成したときに、その体系の無矛盾性・完全性を証明するのが難しいので。無矛盾性・完全性を実現していない──言い換えれば、無矛盾性・完全性を実現していると証明できない──体系を使うことは私にはできない。

 さて、「サブセット」 について、本 エッセー の本文に対して、取り立てて、補足説明はいらないでしょう。「サブセット」 は、ひとつの 「セット」 が 「切断」 された状態──すなわち、「サブセット」 間には排他的 OR 関係が形成される──ことさえ覚えておけばいいでしょう。

 現実的事態 (事業過程・管理過程) と形式的構成を対比したとき、現実的事態のなかで使われている個体指定子 「××番号、×× コード」 は、ほとんど 「セット」 を構成する尺度になるし、現実的事態のなかで使われている 「××区分 コード」 は、ほとんど 「サブセット」 を構成する尺度になります──ただし、構文論上、「×× 区分 コード」 が 「セット」 を構成することもありますが。そして、「サブセット」 を構成する尺度になる 「×× 区分 コード」 は、はたして、妥当な 「サブセット」 を構成するのかどうか を検証しなければならない──妥当でないことが多い。言い換えれば、形式的構成のなかで妥当な 「サブセット」 を構成しない 「×× 区分 コード」 を 「セット」 のなかに そのまま置いて実装すれば、プログラム が複雑になることを本文で注意しています。「サブセット」 が妥当でない場合に、プログラム が どうして複雑になるのかは、本 ホームページ の 41ページ・137ページ を読んでください。





  << もどる ベーシックス すすむ >>
  データベースの基礎知識