14歳の自分に衝撃の事実を告げてください

推移的関数従属について教えてください。


推移的関数従属
 A->B->C かつ A <- Bではない

参考にしている本:
 データベース午後徹底演習(2001年11月初版)
ページ76P

問題:

職種テーブル
 職種 言語経験 DB経験
R 17~20 10-13
SE 10~16 5 -9
P 0~9 0 -4

があり、問題文に

言語及びDBと職種の対応関係は上記のとおりとする。
言語及びDBのいずれか一方の経験ポイントが職種テーブルの該当職種のポイントに満たないような担当者はいないものとする。
たとえば職種がSEの人は、必ず言語経験が10-16のポイントで、かつDB経験は5-9の間のポイントである。

これから、
 言語経験 -> 職種
 DB経験 -> 職種
を導きましたが、解説を見ると、
{言語経験、DB経験}は、多値従属性が存在するが、値を一意に決定することができない

となっています。

多値従属性を理解していないのが原因かもしれませんが、なぜ一意に決定できないのでしょうか?
(1つの値に対して、「1つ以上の」値が対応する)が定義なのですが、上記の説明を見ると一意に特定できると思うのですが。

データを登録するときにそのような制約を儲けていないからダメということなんでしょうか?

よろしくお願いします

A 回答 (1件)

回答がないようなので。


私も第三正規形までしか理解していないのですが。

これは職種→言語経験、職種→DB経験が多値という風に理解しなければいけないようです。
言語経験の値を1つ決めてもDB経験は1つの値に決まりませんね。これも多値従属性です。
{職種、言語経験、DB経験}を{職種、言語経験}{職種、DB経験}とすると
第四正規形になるみたいです。

間違っているかも知れません。

↓に参考URLを載せておきます。

参考URL:http://hwb.ecc.u-tokyo.ac.jp/current/CDD1B8ECBDB …
    • good
    • 0
この回答へのお礼

教えていただいたURLを見て第4正規形を理解しました。

私が間違えていたのは

問題文の
「たとえば職種がSEの人は、必ず言語経験が10-16のポイントで、かつDB経験は5-9の間のポイントである。」

から、言語経験が10-16年ならDB経験は5-9年だから、多値従属じゃないよ、と思ったいたのですが、この時点で既に

10 -> 5
10 -> 6
10 -> 7
10 -> 8
10 -> 9

11 -> 5
11 -> 6
11 -> 7
...

と多値従属していますね。

回答、まことに有難うございました。

お礼日時:2006/03/15 12:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報