2019年 8月15日 「4.3.2〜3 分割と細分」 を読む >> 目次に もどる


 4.3.2 「分割 (partition)」 と 4.3.3. 「細分 (refinement)」 を対にして学習したほうが わかりやすい。「分割」 も 「細分」 も同値関係を前提にした技術です。それらの詳細は、拙著 「いざない」 pp95-96 において説明していますが、「いざない」 を出版してから、私は それらの技術を 「事業分析・データ 設計のための モデル 作成技術」 セミナー では説明しなくなった──というのは、「分割」 「細分」 の代わりの技術 (「切断」) を説明するようになったから。

 ひとつの集合を前提にすれば、「分割」 は部分集合を生成すること (breadth 上の論点) を意味し、「細分」 は部分集合を更に部分集合に分割する (細かに分ける) こと (depth 上の論点) を意味しています──いずれも同値関係上の運用です。そして、それらの運用では、次の関係が成り立つ──

 (1) 集合 A が部分集合 (たとえば、a1と a2) に分割されたとき、
   部分集合のあいだには 「交わり」 はない [ 排他的 OR 関係にある ]。

 (2) 部分集合 a1 を b1 と b2 に分割 (細分) したとき、
   細分された部分集合 ( b1 と b2) の総和と a1 の総数は等しい。

 すなわち、ひとつの集合 A が いくつもの階に細分されても、集合 A の総数 (基数、cardinality) と その部分集合の総和は同じであるということ。

 モデル 技術を指導する際に、「分割」 「細分」 を数学的式を使って説明よりも──拙著 「いざない」 では数学的式を使って説明していますが──、それらと同じ結果を導く他の簡単な技術を使ったほうが システム・エンジニア には使いやすいでしょう。そういう理由から 「分割」 「細分」 に代わって 「切断」 という技術 (実数を定義するときに デデキント が使った技術) を私は 「いざない」 を出版した以後に説明するようになりました。「切断」 を使えば、集合上 問題点となる次の 2点を はっきりと意識することができます──

 (1) 部分集合のあいだには 「交わり」 はない [ 排他的 OR 関係にある ]。

 (2) 上下の階を入れ替えることはできない。

 これらの 2点は いずれも プログラム に多大な影響を与えます。部分集合のあいだに 「交わり」 を認めてしまうと、集合族 (ベキ 集合) の数に対応する 「分岐」(if...) 演算をしなければならない──たとえば、ひとつの集合に 3つの部分集合があって、それらの部分集合のあいだに 「交わり」 があれば、23 [ 2M、M は部分集合の数 ] の 「分岐」 を演算しなければならない。そして、上下の階を入れ替えても意味が通じるなら、いわゆる 「多重継承」 を認めることになってしまう──「切断」 上、ひとつの部分集合 [ 階 n ] は更に複数・多数の部分集合 [ 階 (n-1) ] に細分されて、上下の階の入れ替えは生じない。

 ちなみに、ひとつの集合を 「切断」(「分割」 「細分」) する判断規準は、エンドユーザ が伝達している 「情報」 (原帳票、画面、レポート など) のなかで使われている 「×× 区分 コード」 です。たとえば、「従業員」 の集合のなかで、従業員区分 コード (正社員、パート など) が使われていれば、「従業員」 の集合を 「正社員」 と 「パート」 の部分集合に分割細分します──「正社員」 と 「パート」 の部分集合には 「交わり」 はないし、「正社員」 と 「パート」 の総数は 「従業員」 の数と同じです。ひとつの集合のなかに複数の 「×× 区分 コード」 が定義されていれば、その数と同じ数の 「細分」(階数) が生じる。そして、それらの階では上下の入れ替えは起こらない。

 ひとつの集合のなかに複数の 「×× 区分 コード」 が定義されていて、しかも それぞれの階の部分集合のあいだに 「交わり」 が生じていれば──データ・モデル が それらの形式的な (論理的な) 不整合を正さなければ──、それらの データ を扱う プログラム は無駄な・膨大な ソース・コード を作成しなければならない (拙著 「データベース 設計論──T字形 ER」pp. 86-101 を参照されたい)。 □

 




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