明後日は情報処理技術者なんとかのDBの試験だけど全然勉強してないので今からやります。明日みっちり午前対策するとして、今日は午後の分。テーブルの設計とかSQLとかは仕事でやってれば楽勝なので、第n正規形かを答えてその理由を述べる問題の対策だけやれば十分でしょう。多分。
- 1NF
- 属性が全て単一値だが、非キー属性が候補キーに対して部分関数従属している。
- 2NF
- 属性が全て単一値で、全ての非キー属性が候補キーに対して完全関数従属しているが、候補キーからの推移的関数従属がある。
- 3NF
- 属性が全て単一値で、全ての非キー属性が候補キーに対して完全関数従属し、候補キーからの推移的関数従属性がない。
- BCNF
- 属性が全て単一値で、全ての非キー属性がキ属性に対して完全関数従属し、非キー属性からキー属性への関数従属性がない。
- 4NF
- 属性が全て単一値で、全ての多値従属性が自明であるか、候補キーのみを決定項として与えられている。
- 5NF
- 属性が全て単一値で、全ての結合従属性が自明であるか、候補キーのみを決定項として与えられている。
3,4,5は去年の過去問の模範解答そのまんまなので、どの正規形かが当たっていればこれをそのまんま書いて正解になるでしょう。
1,2とボイスコッドは3を参考に適当に作ったんだけど、「単一値」ってのは「繰り返しがない」ってことなんだろうか。あんま自信ないから「繰り返しがない」に置き換えた方がいいかな。あと、ボイスコッドもあんま自信ないがまあこんなとこだと思う。
この説明がわかりやすいかな…?>http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html
BCNF直した。やっぱりよくわかんないな…。
そもそも一から綺麗に第3正規形のテーブルを設計すれば、4,5の正規化は不要になるはずだし、試験には業務上・システム上の都合で変な形のテーブルを作ってるような問題なんて出ないだろうし。