2003年 8月16日 サブセット と VE (その 3) >> 目次 (テーマ ごと)
  ● QUESTION   サブセット と VE は、実装形が同じになるので、いずれを使ってもよいのではないか。
  ▼ ANSWER   だめ。 データ 解析 (事業解析) ができなくなってしまう。
2008年 9月 1日 補遺  



 たしかに、サブセット と VE は、実装形が同じになることがある。
 たとえば、前回の例 (「請求」 の例、237 ページ) がそうである。

 VE として記述した例

 請求
 {請求番号、請求日、請求金額、・・・} [ E ]

 請求申請
 {請求番号 (R)、承認申請日、・・・} [ VE ]

 請求承認
 {請求番号 (R)、請求承認日、・・・} [ VE ]

 入金予定
 {請求番号 (R)、入金予定日、・・・} [ VE ]

 
 サブセット として記述した例

  請求 [ E ]
   |
   ×
   │
   ├ 承認申請 { 請求番号, 承認申請日 }
   │
   ├ 請求承認 { 請求番号, 請求承認日 }
   │
   └ 請求 { 請求番号, 請求日, 請求金額,・・・ }

  入金予定
  {請求番号 (R)、入金予定日} [ VE ]

 
 「相違の サブセット」 では、それぞれの サブセット を実装すれば、VE を使った構造と同じ実装形になる。
 だが、「事業を解析する」 点から判断すれば、サブセット と VE は、それぞれ、違う目的の技術である。
 サブセット は 1つの entity だが、VE は 複数の (潜在的な) entity を示している。したがって、サブセット と VE では、記述されている構造が示す 「意味」 は、全然、違うのである。

 なお、T字形 ER手法は、「事業解析 = データ 正規形 = アルゴリズム の I/O 化」 を同時に実現することを目的にしている。データ 正規形だけを論点にするのなら、実装形が同じであれば、サブセット でも VE でも良いが、「データ 正規形 = 事業解析」 という点を軽視してはいけない。

 サブセット と VE という 2つの相違する技術を使うということは、それぞれの使用目的が違うということである。上述の例では、VE (請求申請および申請承認) は (認知番号を付与されたら) 請求に対して独立した entity として対峙できる──請求に対して関係を結ぶことができる──ことを示しているが、いっぽう、サブセット は、1つの entity (請求) の状態遷移であることを示している。

 T字形 ER手法を ルール どおりに使ってください。

 



[ 補遺 ] (2008年 9月 1日)

 サブセット (部分集合) と VE (みなし entity) は、以下の点を把握していれば、使用上で間違わないでしょう。

 (1) 「サブセット」 は セット と対になる概念で、ひとつの集合のなかの部分集合である。
 (2) 「みなし entity」 は、entity と対になる概念で、構文論上 entity にはならないが、意味論上 entity と
   みなす概念である。

 ただ、便法として、本来 サブセット として扱わなければならない アトリビュート を VE で対応することもあります──たとえば、「任意入力」 の アトリビュート など。ただし、あくまで、便法であって、本来であれば、「任意入力」 の アトリビュート は、サブセット (形式的 サブセット) として扱うべきです。「任意入力」 の項目が多い場合には、いちいち、サブセット を記述すると煩瑣になるので、便法として VE で扱うことも 「容認しています」。たとえ、「任意入力」 の項目を VE として扱っても、かならず、項目のあいだに、なんらかの制約・束縛があるかどうかを確認して下さい。

 「区分 コード」 に対しては、VE を使わないことを原則としています。というのは、「周延」 (部分集合が適切かどうか) を確認できないので。「区分 コード」 には、「有り・無し」 の フラグ (flag) にすぎない コード もあるのですが──たとえば、「付属品有り・無し」 のような 「区分 コード」 もあるのですが、そういう場合には、VE で対応しても [ あるいは、VE で対応したほうが ] 良いのですが──、TM の関係文法を ちゃんと習得するまでは、文法どおりに、サブセット として扱って下さい。




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