このウインドウを閉じる

A horse may stumble on four feet.

 

 前回 (8月16日)、TM (T字形 ER手法) では、「真」 概念として、以下の 2つを使っていると述べました。

 (1) 事実的な 「F-真」
 (2) 導出的な 「L-真」

 これらの 「真」 概念は、TMD (TM Diagram、T字形 ER図) を 「意味論で推敲する」 ときに、とても大切な役割を果たしています。たとえば、以下を考えてみましょう。

             ┌─────────────────┐
             │   従業員. 部門. 対照表    │
             ├────────┬────────┤
             │従業員番号(R)│        │
             │部門コード(R)│        │
             │        │        │
             └────────┴────────┘

 この対照表は、「配属」 という 「event」 を言及している対照表です。
 対照表は、構文論的には、「真理値表」 として使われますので、以下の標準形 (正規形) を示しています。

 (p ∧ q) ∨ (p ∧ ¬q) ∨ (¬p ∧ q) ∨ (¬p ∧ ¬q).

 したがって、充足しない値 (null) が出るので--いずれかの個体が成立しない事態が出るので--、この対照表は、以下のように分割されます--ただし、「部門」 のみが関与する事態と、「部門」 も 「従業員」 も関与しない事態は、無意味なので、ここでは記述しないことにします。

             ┌─────────────────┐
             │   従業員. 部門. 対照表    │
             ├────────┬────────┤
             │従業員番号(R)│        │
             │部門コード(R)│        │
             │        │        │
             └────────┼────────┘
                      |
                      × null (部門コード)
                      |
          ┌───────────┴───────────┐
          |                       |
 ┌────────┴────────┐     ┌────────┴────────┐
 │       配 属       │     │   配属されていない従業員   │
 ├────────┬────────┤     ├────────┬────────┤
 │従業員番号(R)│        │     │従業員番号(R)│        │
 │部門コード(R)│        │     │        │        │
 │        │        │     │         │        │
 └────────┴────────┘     └────────┴────────┘

 
 さて、この 2つの サブセット を 「意味論」 の観点から検討してみましょう。
 サブセット の「配属」 は 「F-真」 なので、実装することになるでしょう。いっぽう、「配属されていない従業員」 は、「従業員」 に対して、配属されている従業員の補集合であって、「配属」 を意味している訳ではないので、(「F-真」 ではなくて、) 「L-真」 です。したがって、「データ」そのものとして実装しないでしょう--あくまで、「従業員」 のなかで、配属されている従業員の補集合として 「演算 (導出)」 されるでしょう。もし、「配属されていない従業員」 を実装したとしても、「便法」 であって、正当な やりかた ではない。

 もし、「配属されていない従業員」 に対して、「配属されていない理由」 を記述するなら、「従業員」 entity に対する VE となるでしょう。

 ┌─────────────────┐     ┌─────────────────┐
 │       従業員      R│     │   従業員. 非配属理由   VE│
 ├────────┬────────┤     ├────────┬────────┤
 │従業員番号   │従業員名称   │     │従業員番号(R)│非配属理由   │
 │        │        ├┼──○┼┤        │        │
 │        │        │     │        │        │
 │        │        │     │        │        │
 │        │        │     │         │        │
 └────────┴────────┘     └────────┴────────┘

 さて、「配属されていない理由」 を、「配属」 を言及する対照表のなかに記述したら、妥当か (整合的か) どうか。

             ┌─────────────────┐
             │   従業員. 部門. 対照表    │
             ├────────┬────────┤
             │従業員番号(R)│        │
             │部門コード(R)│        │
             │        │        │
             └────────┼────────┘
                      |
                      × null (部門コード)
                      |
          ┌───────────┴───────────┐
          |                       |
 ┌────────┴────────┐     ┌────────┴────────┐
 │       配 属       │     │   配属されていない従業員   │
 ├────────┬────────┤     ├────────┬────────┤
 │従業員番号(R)│        │     │従業員番号(R)│非配属理由   │
 │部門コード(R)│        │     │        │        │
 │        │        │     │         │        │
 └────────┴────────┘     └────────┴────────┘

 
 やっかいなことに、「配属されていない理由」 を記述した 「配属されていない従業員」 は、「従業員」 の VE として実装しても、あるいは、「配属」 の サブセット として実装しても、実装形は同じになります。そして、私は、かつて、「配属されていない理由」 を 「配属」 の サブセット として記述するように語ってきました--でも、それは間違いです。なぜなら、前述したように、「配属」 の サブセット として記述された 「配属されていない従業員」 は、「L-真」 であって、「F-真」 でないから。「配属されていない理由」 は、「従業員」 の VE とするのが正しい。

 「赤本」 を出版したあとで--2005年以後に--、TMD を意味論で推敲する際、私は、「F-真」 と 「L-真」 を丁寧に検証するようになりました。そして、私が、かつて、犯してきた間違いを、いくつか気づきました。意味論での推敲は、非常に難しい、、、。私は、エンジニア なので、じぶんが犯した間違いを訂正するのに吝 (やぶさ) かではない。それらの間違いを、追い追い、説明します。

 
 (2007年 8月23日)

 

  このウインドウを閉じる