2001年12月16日 関係が、そのまま、モノ である! >> 目次 (テーマごと)
  ● QUESTION   「HDR-DTL」 は サブセット の例外措置か。
  ▼ ANSWER   ちがう。 「関係 = モノ」 という現象である。
2007年 1月16日 補遺  



 「物が、そのまま、関係として成立している」という特殊形である。

 
 以下の措置では、出荷のなかに送られた明細行番号が、どの受注番号に附属する明細行であるか、という点を同定できなくなってしまうことを、前回、指摘した。

 {顧客番号、顧客名称}
 {商品番号、商品名称}
 {受注番号、顧客番号 (R)、受注日}
 {受注番号 (R)、明細行番号、商品番号 (R)、受注数}
 {出荷番号、明細行番号 (R)、出荷日}

 [ 受注明細の単位で出荷されているのだから ] 出荷のなかには、以下のように、受注番号がなければならない。

 {顧客番号、顧客名称}
 {商品番号、商品名称}
 {受注番号、顧客番号 (R)、受注日}
 {受注番号、明細行番号、商品番号 (R)、受注数}
 {出荷番号、受注番号 (R)、明細行番号 (R)、出荷日}

 とすれば、[ 出荷のなかに受注番号を複写するのだから ] 受注明細のなかにある受注番号は (R) ではない [ もし、受注番号を (R) として扱ったら、出荷に複写することができない ]。

 「HDR-DTL」 の構造は、以下の 2点を特徴としている。
 (1) HDR と DTL が、いっしょになって、1つの 「event」 を構成している。
 (2) HDR と DTL が、それぞれ、単独に 「event」 として機能できる。

 つまり、2つがいっしょになって、1つの 「event」 を形成しているのなら、それぞれが、単独に、「event」 として機能することは 「矛盾」 である。しかも、受注明細のなかに記述されている 「行番号」 は、「種別 コード」 であって、「区分 コード」 でもなければ identifier でもない。言い換えれば、受注明細の 「行番号」 は、現象的には、受注番号を構成する複合的な番号として機能している。つまり、受注 HDR の受注番号と受注 DTL の受注番号は桁数のちがう受注番号なのである(*)。とすれば、HDR と DTL は、2つがいっしょになって 1つの entity を構成していながら、それぞれの間には、「1-対-複数」 の関係が成立する、という現象である。言い換えれば、「モノ の関係が、同時に、モノ そのものとして機能している」という現象である。

 T字形 ER手法は、(「モノ と関係は同一 レベル にある、ということを立脚点にして) 「いかなる複合命題も有限個の要素命題に解体できる」 という命題論理の観点から データ 構造を解析しているので、述語論理 (タイプ 理論) を認める訳にはいかない。
 とすれば、「ある事物の関係が、同時に、事物そのものとして扱われる」 という現象を扱うことができない。したがって、[ 命題論理を使ったT字形 ER手法の規則のなかで ] それを作図しようとすれば、以下の 3点を表現しなければならない。
 (1) 2つの モノ は、いっしょになって、1つの モノ を形成している。
 (2) 2つの モノ を認知する identifier が 「桁数のちがう」 同一の identifier である。
 (3) 2つの モノ の間には関係が成立している。

 以上の現象を、T字形 ER手法を使って記述しようとすれば、以下の作図になる。

             ┌─────────────────┐
             │       受注       E│
             ├────────┬────────┤
             │受注番号    │        │
             │        │        │
             │        │        │
             └────────┼────────┘
                      |
                      × null (明細行番号、...)
                      ↓
          ┌───────────┴───────────┐
          |                       |
 ┌────────┴────────┐     ┌────────┴────────┐
 │      受注HDR      │     │      受注DTL      │
 ├────────┬────────┤     ├────────┬────────┤
 │受注番号    │受注日     │     │受注番号    │受注数     │
 │顧客番号(R)   │        ├┼───<│明細行番号   │        │
 │        │        │     │商品番号(R)   │        │
 │        │        │     │        │        │
 │        │        │     │         │        │
 └────────┴────────┘     └────────┴────────┘

 (1) 相違の サブセット として扱う。
 (2) サブセット 間に リレーションシップ を結ぶ。

 以上の記述が、「ある事物の関係が、同時に、事物そのものとして扱われる」 という表現である。

 (*) 「行番号」 が明示的に (explicitly) 記述されないこともある。例えば、受注明細のなかに記述される商品番号として、同じ商品番号を使わない--言い換えれば、記載される商品番号が、すべて、異なる商品番号である--、という前提であれば、行番号を省略しても、商品番号を使って明細行を扱うことができる。□

 



[ 補遺 ] (2007年 1月16日)

 いわゆる 「HDR-DTL」 に関して、本 エッセー のなかで述べた 「『相違の サブセット』 として扱う」 という理解は間違いである。「HDR-DTL」 構造は、具象 カテゴリー・ファンクター として説明したほうが--言い換えれば、TM (T字形 ER手法) では、「概念的 スーパーセット」 として説明したほうが--整合的であることを、すでに、「反 コンピュータ 的断章」 (2006年11月23日) で述べた。「HDR-DTL」 の正しい記法は、以下のようになる。

             ┌─────────────────┐
             │       受注      MA│
             ├────────┬────────┤
             │受注番号    │        │
             │        │        │
             │        │        │
             └────────┼────────┘
                      |
                      × 概念的スーパーセット
                      ↓
          ┌───────────┴───────────┐
          |                       |
 ┌────────┴────────┐     ┌────────┴────────┐
 │      受注HDR      │     │      受注DTL      │
 ├────────┬────────┤     ├────────┬────────┤
 │受注番号    │受注日     │     │受注番号    │受注数     │
 │顧客番号(R)   │        ├┼───<│明細行番号   │        │
 │        │        │     │商品番号(R)   │        │
 │        │        │     │        │        │
 │        │        │     │         │        │
 └────────┴────────┘     └────────┴────────┘




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