応用情報技術者 2016年 春期 午前2 問27
問題文
関数従属を次のように表記するとき、属性a〜eで構成される関係を第3正規形にしたものはどれか。


選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
関数従属図からの第3正規形【午前2解説】
正解の理由
図から読み取れる関数従属は、a→b、a→c、a→d、b→c、{b, d}→e の五つです。a→c は a→b と b→c から導ける推移的関数従属なので、関係を (a, b, d)、(b, c)、(b, d, e) に分解すると、どの関係にも部分関数従属と推移的関数従属がなくなり、第3正規形になります。この分解はエです。
解法ステップ
- 図の矢印を読み取る。
- 上側の3本:a→b、a→c、a→d
- 下側の短い線:b→c
- 下側の長い線:b と d から出た線がまとまって e を指す → {b, d}→e
- 元の関係の主キーを求める。a から b、c、d が決まり、b と d から e が決まるので、a だけで全ての属性が決まる。主キーは a。
- 推移的関数従属を取り除く。
- a→b→c:c は a に推移的に従属する → (b, c) に分ける。
- a→{b, d}→e:e は a に推移的に従属する → (b, d, e) に分ける。
- 残りは (a, b, d)。
- 分解後の各関係を確認する。
- (a, b, d):主キー a。a→b、a→d だけ。
- (b, c):主キー b。b→c だけ。
- (b, d, e):主キー {b, d}。{b, d}→e だけ(b だけ、d だけでは e は決まらない)。 いずれも第3正規形です。
選択肢別の誤答解説
- ア:(a, b, c, d) には a→b→c という推移的関数従属が残っているので、第3正規形ではありません。
- イ:(b, c) を分けていますが、(a, b, c, d) に c が残っているので、推移的関数従属 a→b→c が解消されていません。
- ウ:(b, d, c, e) の主キーは {b, d} ですが、c は主キーの一部である b だけで決まる(部分関数従属)ので、第2正規形にもなっていません。
- エ:(a, b, d)、(b, c)、(b, d, e) はいずれも第3正規形で、元の関数従属も全て保たれています。
よくある誤解
- 図の下側の線を「b→c」と「b→e」の二本と読むこと。e への線は b と d の両方から出てまとまっているので、{b, d}→e(b と d の二つの値で e が決まる)です。凡例の(2)と同じ書き方です。
- 推移的関数従属を残したまま、主キーが一つあればよいと考えること。第3正規形では、非キー属性が主キーに推移的に従属してはいけません。
補足コラム
- 第2正規形:非キー属性が、主キー全体に完全関数従属している(主キーの一部だけに従属していない)。
- 第3正規形:第2正規形で、かつ非キー属性が主キーに推移的に関数従属していない。
正規化では、推移的・部分的な従属の「決定する側」と「決定される側」を別の関係に切り出し、決定する側の属性を元の関係にも残します。
FAQ
Q. 分解した関係を結合すると、元の関係に戻りますか?
A. 戻ります。(a, b, d) と (b, c) は b で、さらに (b, d, e) とは {b, d} で結合でき、情報を失わずに元の関係を復元できます。
A. 戻ります。(a, b, d) と (b, c) は b で、さらに (b, d, e) とは {b, d} で結合でき、情報を失わずに元の関係を復元できます。
関連キーワード: 関数従属、第3正規形、推移的関数従属、部分関数従属、正規化

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

