2001年 6月10日 作成 セットとクラス (現象的な違い) >> 目次 (作成日順)
2006年 8月16日 補遺  


▼ セット (集合) と クラス (類) [ その 3: 現象的の違い ]

以下の 「顧客」 entity の構造を例にして、クラス と セット の現象的な違いを述べる。



         ┌───────────────────┐
         │        顧 客       R│
         ├─────────┬─────────┤
         │顧客番号     │顧客名称     │
         │         │         │
         │         │         │
         └─────────┼─────────┘
                   |
            ┌──────┴───────┐
       ┌────┴────┐    ┌────┴────┐
       │    ?    │    │   法 人   │
       └────┬────┘    └─────────┘
     ┌──────┴───────┐
  ┌──┴──┐        ┌──┴──┐
  │  男  |        │  女  │
  └─────┘        └─────┘


1. クラス の考えかた

 クラス は 「階の関係」 を記述して、「分類する」 という概念である。
 性質 f(x) を使って 「男」 の集合と 「女」 の集合と 「法人」 の集合を形成し、「男」 と 「女」 を要素とする類 (クラス) 形成するとすれば、「男」 と 「女」 の高階の クラス は 「個人」 とも 「人間」 とも解釈できるので、「個人」 と 「人間」 のどちらが正しいのか、という問題点が起こる。
 つまり、「概念の抽象化 (クラス の生成)」 が個人ごとに様々になる危険性が起こる。この点が、OOP (Object-Oriented Programming)において、クラス の生成が、SE ごとに十人十色になってしまう点である。

2. セット の考えかた

 セット は 「包摂関係」 を記述して、「区分する」 という概念である。
「顧客」 の集合 (セット) を最初に形成して (区分コード を判断規準にして) 部分集合 (サブセット) に区別する。「顧客」 の集合 (セット) は 「個人・法人区分コード」 を使って、「個人」 の部分集合と 「法人」 の部分集合に区別され、「個人」 の集合は、「性別」 を使って、「男」 の部分集合と 「女」 の部分集合に区別される。「区分」 は、「区分コード」 という判断規準を使って生成されるので、サブセット の生成が個人ごとに様々になる危険性はない。



以上のように、「クラス」 と 「セット」 は、現象的には、表裏一体の関係にあるが、定義が違う
クラス (タイプ理論) セット (包摂関係)
G (f) F ⊂ G
f (x) = {a, b, c}

G (f) = {f} ≠ {a, b, c}

F = {a, b, c}  

G = {a, b, c, d}

クラス のなかでは、「男」 と 「女」 は、「 個人」 の メンバー ではあるが、「顧客」 の メンバー ではない。


3. クラス と セット のちがい

 クラス の定義を説明する例として、「国連」 が例示されることが多い。すなわち、国連の メンバー は国々であり、 国の メンバー は、例えば、日本国なら日本人だが、日本人は国連の メンバー ではない、という説明がされる。

 しかし、(セット の観点からすれば) 日本人の集合は、いくら日本人を加わえても、日本人の集合であって、日本国にはならない。もし、f (x) の述語を 「x は日本国籍を取得している」 というなら、「国」 を認知の対象としているのだから、(タイプ理論を使わない) 「命題論理」を使った 「関係の論理 (aRb)」 の観点から言えば、「人」 と 「国」 という 2つの enity の間に生成される真理値表 (対照表、「人. 国. 対照表」) として表現される。

 つまり、「男」 と 「女」 を使った例で言えば、「男」 と 「女」 の集合を起点にして、「個人 」 あるいは 「法人」 という クラス を形成するためには、タイプ (N − 1)と タイプ N の間には、「概念の飛躍 (抽象化)」 が起こっているのである。 概念の一般化は論理和ではない。



[ 補遺 ] (2006年 8月16日)

 「セット と クラス」 のちがいは、数学上、「或る部分集合を仮想するかどうか」-- セットは、{x ∈ a | f (x)} という 「部分集合の公理」 を前提にしているが、クラス には、そういう前提はない -- という点にすぎないのかもしれない (小生は数学の専門家ではないので、そうであると断言できるほどの知識がないが、それぞれの 「定義」 から判断して、そういうふうに言うことができると思う)。手短に言えば、「みずからを メンバー としない セット の全体はないけれど、そういう クラス はある」 ということ。

 この 「定義のちがい」 が、セット あるいは クラス を実際の 「集合の構成」 として適用するときに、「具体的に」 どのような相違点として生じるのかと問われたら、少なくとも、データベース 設計では、{x ∈ a | f (x)} でも f (x) でも相違点はないし、そもそも、企業の データ は、「或る部分集合を仮想した (有限の)」 集合なので、セット 概念のほうが 「相性が良い」。
 ただし、「有限」 を数学的に定義しようとすれば、「無限」 を前提にしたほうが定義しやすいようです。

 「構造」 は 「個体と関係」 として記述され、個体に対して セット を使おうが クラス を使おうが良いのであれば、「関係」 を--「関係の論理 (aRb)」 を--R (a, b) として考えて、述語論理に翻訳して、第一階の述語を使うか、それとも、高階の述語を使うか、という点のほうが、データ 設計法にとって、公理系を作る大切な点になるでしょうね。

 コッド関係モデルは、第一階の述語と セット 概念を使っています。
 TM (T字形 ER手法) は、或る意味では、第二階の概念を使っています。というのは、それぞれの セット に対して、「resource」 および 「event」 という概念を適用して、「resource」 および 「event」 に関する公理を提示しているから。TM が提示している公理は、以下の 3つです。

  (1) R {resource, event}.
  (2) R {event, event}. (正確に言えば、R (event, event) である。)
  (3) R {resource, resource}.

 したがって、TM は、或る意味では、クラス 概念を適用しているのですが--「event」 以外は、「resource」 であるという クラス を適用しているのですが--、それでも、或る定義域 (或る企業) のなかで、それらを使うので、セット 概念とも言える。

 ただ、「event」 であれ 「resource」 であれ、ひとつの セット (あるいは、クラス) のなかで、みずからの メンバー に対して、「並び」 を構成するのであれば--いわゆる 「再帰 (recursive)」 であれば--、メンバー を対象にした 「A 上の関数」なので、第二階の述語論理を使わない。

 ただし、TM は数理 モデル ではない。述語論理の公理系 (たとえば、PM) に従って、上述した 3つの公理に対して、なんらかの公理系を示している訳ではない。TM は、個体の セット (entity) を 「event」 と 「resource」 の 2種類に区分して、entity の定義から直ちに導かれる 「組」 を 2項関係の 「(4つの) 公理」 として命題の形で述べているので、「非常にゆるやかな意味において」、「系」 ということができるかもしれないけれど、数理 モデル ではない。




  << もどる HOME すすむ >>
  ベーシックス