前回 (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日)