このウインドウを閉じる

  ● QUESTION   配属は対照表を使って記述できるが、配属されていない従業員はどう扱えばよいか。
  ▼ ANSWER   対照表の null値として扱えばよい。


  「配属」 は、以下のように、対照表を使って記述できる。

  従業員 {従業員番号、従業員名称、...}. [ R ]
  部門 {部門 コード、部門名称、...}. [ R ]
  従業員. 部門. 対照表 {従業員番号 (R)、部門 コード (R)、配属日、...}. [ E ]

 上述した データ 構造は、「配属されている」 従業員の一覧を記述している。さて、問題点は、「配属されていない」 従業員の一覧を記述するという点にある。

[ 注意 ]
 もし、配属されているか、配属されていないか、という点が大きな意味をもつのであれば、「配属 FLAG」 が用意されていて、例えば、FLAG の値が 「0」 であれば 「配属されていない」 ことを記述して、「1」 であれば 「配属されている」 ことを記述することはできる。そうすれば、データ 構造は、以下のようになる。

  従業員 {従業員番号、従業員名称、...}. [ R ]
  従業員. 配属 {従業員番号 (R)、配属 FLAG、...}. [ VE ]
  部門 {部門 コード、部門名称、...}. [ R ]
  従業員. 部門. 対照表 {従業員番号 (R)、部門 コード (R)、配属日、...}. [ E ]

 以上の データ 構造であれば、「配属されていない」 従業員の一覧を得ることはたやすい。
 ここでは、「配属 FLAG」 がない、という前提に立って、「配属されていない」 従業員を対象とする。

 さて、「配属されていない」 従業員を記述するために、リレーションシップ の 「ゼロ の cardinality」 を記述することが多いようである。しかし、リレーションシップ の「ゼロ の cardinality」 を記述したからといって、アルゴリズム が コンパクト になる訳ではない。つまり、従業員の セット (集合) のなかから 「配属されている」 従業員の サブセット (部分集合) の補集合を演算する、という アルゴリズム は コンパクト にはならない (当然ながら、パフォーマンス も悪い)。

 対照表は真理値表である。とすれば、以下の 4つの事象が 「可能」 態として考慮される。

  (1) (T, T)
  (2) (T, F)
  (3) (F, T)
  (4) (F, F)

 T は 「true」 を意味して、F は 「false」 を意味する。言い換えれば、F は 「null」 を意味する。
 とすれば、「従業員. 部門. 対照表」 は、「null」 を判断して、以下の 3つの サブセット に区別することができる--なお、(F, F) は データ として起こり得ない。

  (1) {従業員番号 (R)、部門 コード (R)、配属日、...}.
  (2) {従業員番号 (R)、...}.
  (3) {部門 コード (R)、...}.

 とすれば、(2) の サブセット {従業員番号 (R)、...} が 「配属されていない」 従業員を記述している。
 すなわち、対照表のなかで 「null」 が判断されていれば、「配属されていない 」 従業員は データ 構造として用意されている。したがって、「配属されていない」 従業員を一覧表示する アルゴリズム は コンパクト になる (1行の関数引きを使って記述できる)。

 さて、ここで論点になるのは {従業員番号 (R)、...} が 「データ の冗長性」 ではないか、という点である。
 なぜなら、従業員番号を identifier としている従業員 entity が すでに存在しているから。

 しかしながら、{従業員番号、...} [ 従業員 entity ] と{従業員番号 (R)、...} [ 配属 ] はちがう。
 なぜなら、たとえば、配属されていない 「理由 (コメント 行)」 を記述することを考えてみればよい。
 配属されていない 「理由 (コメント 行)」 は {従業員番号 (R)、...} [ 配属 ] という事態に帰属する述語であって、{従業員番号、...} [ 従業員 entity ] そのもの-の性質に帰属する述語ではない。

  関係を関数として扱わないT字形 ER手法は、データ の正規形 (標準形) として、主選言標準形を前提にしている。主選言標準形は、以下のように、「恒真」 の連言から導出される。なお、「恒真」 を 「I」 という略語を使って記述する。

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

 [ (T ∧ T) ∨ (T ∧ F) ∨ (F ∧ T) ∨ (F ∧ F) あるいは (1 ∧ 1) ∨ (1 ∧ 0) ∨ (0 ∧ 1) ∨ (0 ∧ 0) として考えればよい。]

 対照表は真理値表である。主選言標準形は真理値表を使った真偽を検証しやすい。したがって、対照表を使って主選言標準形を形成することができる。

 述語論理を使って集合を認知して、関係を関数として扱う前提では、対照表は アルゴリズム のなかで扱うのが正当である。いっぽう、命題論理を使って集合を認知して、関係を関数としない--「個体と関係は同一 レベル にある」 と考える--前提では、対照表は真理値表として作用する。
 したがって、T字形 ER手法の標準形 (正規形) は主選言標準形である



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

 「配属されていない従業員」 を 「T之字」 記法で記述すれば以下のようになる。

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

 
 この記法を観て、この対照表は、「データ の冗長」 であるとして、私に向かって、「正規形 (コッド 正規形 ?) を 知っていますか」 と言った 20歳代の SE が かつて いました (笑)。私は、コッド 関係 モデル の前提に立って、TM (T字形 ER手法) を作った訳ではない。前提の違う形式体系を対比して、前提を無視して、技術を云々するのは fallacy の 1つでしょうね。

 もし、対照表が、認知番号を付与されて event として記述されたとしたら、それでも、件のひとは、以下の構造を 「データ の冗長」 というのかしら。

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

 
 TM は、主選言標準形を正規形として、entity を定義して、entity を 「resource と event」 という性質に分類している点が特徴です。そして、TM では、構文論として、entity に対して、関係文法 (「resource-対-event」 「event どうし」 「resource どうし」 および 「再帰」) が用意されています。resource どうしの関係文法では、対照表が生成されます。この対照表は、resource の組が、主選言標準形 (真理値表) として、「成立・不成立 (言い換えれば、関与・非関与)」 を記述して、かつ、event としての性質を帯びています。言い換えれば、真理値表は、「場合分け」 と云ってもいいでしょう。事業過程のなかで伝達されている 「情報 (帳票、画面など)」 を対象にして、さきに述べた前提・文法を使って、「ことば の意味」 を解析する技術が TM です。そういう体系のなかで、対照表 {従業員. 部門. 対照表} を 「場合分け」 して、「配属されていない従業員」 を記述することは、前提・文法のなかで、なんら、矛盾していない--整合的である--。

 ただし、「配属」 を言及している対照表は事実的な 「F-真」 ですが、「配属されていない従業員」 は、「配属」 の場合分けであっても、「event」 を示していないので、導出的な 「L-真」 です。したがって、「従業員」 entity のなかから、「配属」 entity に関与している従業員の補集合として計算するのが正当な やりかた です。

 なお、「赤本」 のなかで記した 「『event』 の並びの例外」 (158ページ - 159 ページ) に対して--その例題でも、null を扱っていますが--、或る Wiki では、「奇怪だ」 などと非難されていたそうですが (笑) -- 私は、その Wiki に記載された文を読んでいないので、又聞きですが--、その非難も、はたして、TM の前提を理解しているのかどうか疑わしいですね。じぶんが立っている前提で、(それとは前提の違う) TM を憶測して当てずっぽうに批評されるのは、はなはだ迷惑です。




  このウインドウを閉じる