2003年 7月 1日 事業所 コード (コード の混在) >> 目次 (テーマ ごと)
  ● QUESTION   事業所 コード のなかに プロジェクト・コード が混入しているが、どのように扱えばよいか。
  ▼ ANSWER   階の関係が崩れた例である。 概念的 スーパーセット を使えばよい。
2008年 7月16日 補遺  



 以下の データ 構造を前提にする。

 事業所
 {事業所 コード、事業所名称、・・・} [ R ]

 部門
 {部門 コード、部門名称、・・・} [ R ]

 プロジェクト は、いくつかの部門から代表が集まって編成されている、とする。ときには、いくつかの事業所から代表が集まって編成されることもある、とする。本来であれば、プロジェクト・コード を認知番号にして プロジェクト を独立した entity としなければならなかったのだが、プロジェクト・コード は使われておらず、事業所 コード を使って プロジェクト も扱っている、とする。

 
● プロジェクト 区分 コード がない

 以上の前提において、事業所 コード のなかにプロジェクト・コード が混入していても、たとえば、事業所 コード の桁数のなかで、最初に P という文字があれば プロジェクト である、というふうに、データ の値を使って プロジェクト を判断していれば、データ 構造上では、プロジェクト を記述する しかた はない。
 したがって、以下の構造になる。

 事業所
 {事業所 コード、事業所名称、・・・}[ R ]

 部門:
 {部門 コード、部門名称、・・・}[ R ]

 事業所. 事業所. 再帰
 {事業所 コード (R)、事業所 コード (R)} [ いくつかの事業所から代表が集まった プロジェクト 編成 ]

 事業所. 部門. 対照表
 {事業所 コード (R)、部門 コード (R)} [ いくつかの部門から代表が集まった プロジェクト 編成 ]

 事業所 コード の中味が プロジェクト であることを示すには、アトリビュート・リスト の 「前提 (baseline)」 欄のなかに記述するしかない。 [ 関連項目 → 「データ 値と サブセット」 (197 ページ)参照 ]

 そして、「事業所. 事業所. 再帰」 と 「事業所. 部門. 対照表」 の 2つに対して、「プロジェクト」 という概念的 スーパーセット (クラス、あるいは タイプ) を記述しておけばよい。

 
● プロジェクト 区分 コード がある

 事業所 entity のなかに プロジェクト 区分 コード が定義されていれば、事業所 entity は事業所と プロジェクト の サブセット になるが、サブセット 間に リレーションシップ が生成されるという 「奇妙な」 構造になる。「奇妙な」 構造という意味は、いくつかの事業所から代表が集まって プロジェクト が編成されるのだから、プロジェクト は、本来、事業所の サブセット ではない、という意味である。

   事業所
    |
    = プロジェクト 区分 コード
    │
    ├ { [ 事業所 ] 事業所 コード、事業所名称} [ R ]
    │
    │ プロジェクト. 事業所. 対照表 {事業所 コード (R)、事業所 コード (R) }
    │
    └ { [ プロジェクト ] 事業所コード、事業所名称} [ R ]

 事業所. 部門. 対照表
 {事業所 コード (R)、部門 コード (R)}

 部門
 {部門 コード、部門名称、・・・} [ R ]

 そして、「プロジェクト. 事業所. 対照表」 と 「事業所. 部門. 対照表」 の 2つに対して、「プロジェクト」 という概念的 スーパーセット (クラス、あるいは タイプ) を記述しておけばよい。

 ただし、DA (Data Analyst) は プロジェクト 区分 コード が適切でないことを エンドユーザー に問題提起しなければならない。

 
● プロジェクト を単独 entity としたいのなら

 やや、高等な技巧になるが、コード 体系の変更を狙って、「事業所 コード + プロジェクト 区分 コード」 を 「疑似的な プロジェクト・コード」 として扱えば、以下の構造になる。

 プロジェクト
 {事業所 コード + プロジェクト 区分 コード、プロジェクト 名称、・・・} [ R ]

 事業所
 {事業所 コード、部門名称、・・・} [ R ]

 部門
 {部門 コード、部門名称、・・・} [ R ]

 プロジェクト. 事業所. 対照表
 {事業所 コード (R) + プロジェクト 区分 コード (R)、事業所 コード (R)}

 プロジェクト. 部門. 対照表
 {事業所 コード (R) + プロジェクト 区分 コード (R)、部門 コード (R)}

 そして、「プロジェクト. 事業所. 対照表」 と 「プロジェクト. 部門. 対照表」 の 2つに対して、「プロジェクト」 という概念的 スーパーセット (クラス、あるいは タイプ) を記述しておけばよい。

 



[ 補遺 ] (2008年 7月16日)

 本 エッセー では、具体例を示しているので、取り立てて、補遺はいらないでしょう。

 本 エッセー のなかで使われている用語を、若干、訂正しておきます。「アトリビュート・リスト」 のなかに、「前提 (baseline)」 欄があるのですが、「前提」 という言いかたを、最近 (2年ほど以前から)、「制約・束縛」 という言いかたに変えています──ただ、「アトリビュート・リスト」 では、いまでも、「前提」 というふうに記載しています。

 本 エッセー で述べた 「階のちがう概念が、ひとつの個体指定子 (entity-setter) のなかで同列に付値されている」 という現象を、私は、ときどき、clients の いくつかの システム で遭遇しました。クリプキ 氏の ことば を借用して、(正しい クラス 演算に対して、そういう 間違った クラス 演算を) 「クワス」 算というふうに私は諷しています。

 さて、セット、クラス、アトリビュート、述語は、数学上、それぞれ違う概念として定義されているのですが、いっぽうで、それらの概念を、ふだんの生活のなかで使うときに──ここで云う 「ふだんの生活」 というのは、システム 設計 (そして、特に、データベース 設計) という意味ですが──、どれほどの違いがあるのでしょうか。それらの概念のなかで、どれか ひとつを起点にして、ほかの概念を類似概念として使えば、それらの概念の違いは、使用上、さほど、難点にはならないのではないでしょうか。ちなみに、私は、セット 概念を起点にしています。セット 概念を起点にすれば、セット は、特殊な種類の クラス になるにすぎないでしょう。すなわち、もし、クラス のなかに、「階」 を導入すれば、クラス は、クラス の元 (メンバー) であるとき、セット である、という考えかたです。だから、私は、クラス を f (x) としてみなして、(セット が モノ のあつまりであることに対して、) クラス を 「概念」 というふうに考えています。とすれば、セット は クラス であると思っても宜しい。そして、もし、クラス を f (x) だとすれば、クラス と 「性質」 には、さほど、違いはなくなって、「叙述的・述語的な」 集合を考えることも、自然な やりかた でしょう。すなわち、外延が同じもので、「分割 (division)」 を除去したものを クラス とみなすのが自然な やりかた でしょう。

 さて、クラス のなかに 「階」 を導入することを考えてみましょう──ラッセル 氏が提示した 「型 (タイプ)」 を考えてみます。「階 (あるいは、「型」)」 は、「集合論の パラドックス」 を回避するために導入されました。「階 (あるいは、型)」 を使うというのは、変数に対して添字を使って、階層的な記法を使う やりかた です。すなわち、個体を x 0 とか y0 として、集合を x1 とか y1 と、さらに、レベル 3 (集合の集合)、レベル 4 (集合の集合の集合) というふうに無限に続けることができます。ただ、ひとつの範囲のなかの ひとつの集合を定立するには、それらの構成員 (元) に対して、階の添字はいらないでしょうし、まして、「文」 を単位にして考えれば──たとえば、「佐藤正美は男である」 という文を考えれば──、単称名辞 (佐藤正美) に対して、性質 (男である) の外延 (集合)を考えることも意味はないでしょう。ただ、「階 (あるいは、型)」 の考えかたは、概念を構成する やりかた に合致するので、自然に感じられるでしょうね。

 ところが、この 「階 (あるいは、型)」 を使ったときに、少々、やっかいな問題点が浮上します。TM のなかで、そういう現象が、多々、起こります──「対照表」 がそうです。というのは、たとえば、集合の 「論理和 (論理積)」 を考えてみてください。それぞれの集合 (レベル 2) は、個体変数 (レベル 1) を前提にして定立されているのですが、すべての集合の 「論理和 (あるいは、論理積)」 は、レベル 3 で扱うことになります──あるいは、少なくとも、レベル 2 に属することを排除されるでしょう。この やりかた は、データベース 設計では、「強すぎる」 でしょうね。寧ろ、セット 概念 (の 「対の公理」) を使ったほうが データ を構成しやすい。だから、私は、タイプ 理論を使わなかった。

 さて、本 エッセー で述べた 「事業所、部、プロジェクト」 に関して、たとえば、最初に、「事業所」 という類を考えて、次に、その構成員として、それぞれ、「部」 「プロジェクト」 を考えるという やりかた が、ほんとうに effective かどうか──言い換えれば、クラス 概念 (タイプ 概念) を起点にして考えるという やりかた が、ほんとうに effective かどうか──を検討していただきたい。ここには、或る混乱が起こっているように私には思われます。すなわち、この混乱は、「クラス (あるいは、タイプ)」 を適用するときに、「分割・細分」 を トップダウン 的に導入してしまったので起こったように私には思われます。前述しましたが、「クラス」 は、「性質」 として考えて、ボトムアップ 的に導入したほうが effective ではないでしょうか──特に、データ が すでに存在しているような領域では、そうだと思います。そして、いったん、クラス (あるいは、タイプ) を使って 「概念」 を構成したら、次に、上位の階 (類) から下位の階 (種) が 「網羅されているかどうか」 を検討するほうが effective だと私は思います。




  << もどる HOME すすむ >>
  データ解析に関するFAQ