正規化(BCNF・4NF・5NF)とは?データベースの表を整理して重複をなくし

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

正規化とは(全体像)

正規化は、表(テーブル)を上手に分けて、同じ情報があちこちに重複しないように整えること。重複があると、直し忘れて食い違う(これを「更新異常」という)。

身近にたとえると、住所録の整理。同じ人の住所をあちこちに書いていると、引っ越したとき直し忘れて住所がバラバラになる。共通の情報は1か所にまとめておけば、直すのも1回で済むよー。

押さえるのは、正規化には段階があって、進むほど厳しくなること。そして実用では3NF(第3正規形)あたりが目安ということだよー。


詳しく:正規化の段階と「3NFが目安」だけ覚えれば戦える

ここが記事の心臓部。まず正規化の段階を見ていこーね。

正規化の段階(進むほど厳しい)

段階ざっくり何をする
1NF1マスに1つの値(くり返しの項目をなくす)
2NFキーの一部だけで決まる項目を別の表へ
3NFキー以外の項目どうしで決まる関係をなくす
BCNF3NFをさらに厳しくした形
4NF・5NFより特殊な重複も取り除く

実務でよく目標にするのは3NF。ここまでやれば、たいていの重複と更新異常は防げるのー。

ここで一番のひっかけが「5NFが一番えらいから、いつも5NFにすべき」という誤解。正規化はやりすぎると、表が増えて処理が遅くなるなど逆効果になることもある。だから実用は3NFが目安で、性能のためにわざと正規化を崩す(非正規化)こともあるよー。

もう1つの要点が、BCNFと3NFの違い

BCNFと3NFの関係

位置づけ
3NF実用の目安
BCNF3NFをさらに厳しくした形(より厳密)

BCNFは3NFと同じではなく、3NFより一段きびしい。よく似ているので「同じもの」と混同しやすいけど、別ものなのー。

わかりやすく言い換えると

要するに、住所録の整理でイメージするとラクだよー。

正規化の目的 … 同じ情報の重複をなくして、直し忘れ(更新異常)を防ぐ

3NFが目安 … 実用ではここまでで十分なことが多い

やりすぎ注意 … 進めるほど表が増える。性能のためにあえて崩すこともある

つまり、「目的は重複をなくして更新異常を防ぐ」「実用は3NFが目安(やりすぎ注意)」、この2点が試験の急所なのー。


試験のツボ

🔴 一番出る:正規化の目的

①同じデータの重複をなくす

②直し忘れで食い違う「更新異常」を防ぐ

🔴 次に出る:段階と実用の目安

①1NF→2NF→3NF→BCNF→4NF→5NFと進むほど厳しい

②実用は3NFが目安(5NFが常に最良ではない・やりすぎは逆効果)

🟡 押さえると安定:BCNFと3NFの違い

①BCNFは3NFをさらに厳しくした形

②よく似ているが別もの(BCNFのほうが厳密)


よくある間違い

「正規化はいつも5NFまで進めるのが最良である」→ ✗  実用は3NFが目安。進めすぎると表が増えて遅くなるなど逆効果のことも。

「BCNFと3NFはまったく同じものである」→ ✗  BCNFは3NFをさらに厳しくした形で、別もの。

「正規化の目的はデータをわざと重複させることである」→ ✗  逆で、重複をなくして更新異常を防ぐのが目的。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(正規化の目的)

📝 オリジナル問題 1 正規化の目的

正規化の目的に関する次の記述のうち、正しいものはどれか。

  1. 正規化はデータをわざと多くの場所に重複させて増やすことを目的とするものだとされている
  2. 正規化は同じデータの重複をなくして、直し忘れで食い違う更新異常を防ぐことを目的とする
  3. 正規化は画面の表示を派手にする飾りつけのことで、データの整理とは無関係だとされている
  4. 正規化はデータをすべて1つの表にまとめることだけを目的とするものだとされているものだ
データスラ
データスラ 解答・解説

解答は 2 だよー。

正規化の目的は、同じデータの重複をなくして、直し忘れで食い違う「更新異常」を防ぐことなのー。住所録を1か所にまとめておく感じだよー。

選択肢1の「わざと重複させる」、選択肢3の「画面の飾りつけ」、選択肢4の「1つの表にまとめる」はどれも誤りなのー。

選択肢判定理由
1重複を増やすのではなくなくす
2重複をなくし更新異常を防ぐ
3画面の飾りつけではない
4重複をなくすため表を分けることも

オリジナル問題2(段階と実用の目安)

📝 オリジナル問題 2 正規化の段階と実用

正規化の段階に関する次の記述のうち、正しいものはどれか。

  1. 正規化はどんなときも必ず5NFまで進めるのが最良で、3NFで止めてはいけないものだとされる
  2. 正規化には段階がなく、すべての表は最初から同じ形に決まっているものだとされているものだ
  3. 正規化は進めるほど必ず処理が速くなるので、止める理由はないものだとされているものである
  4. 正規化は1NFから5NFへ進むほど厳しくなり、実用では3NFが目安とされることが多いのだ
データスラ
データスラ 解答・解説

解答は 4 だよー。

正規化は1NFから5NFへ進むほど厳しくなって、実用では3NFが目安とされることが多いのー。進めすぎると表が増えて遅くなることもあるから、5NFが常に最良というわけじゃないよー。

選択肢1の「必ず5NFまで」、選択肢2の「段階がない」、選択肢3の「必ず速くなる」はどれも誤りなのー。

選択肢判定理由
1実用は3NFが目安・5NFが常に最良ではない
2段階がある
3進めすぎると遅くなることも
4進むほど厳しい・実用は3NF

オリジナル問題3(BCNFと3NF)

📝 オリジナル問題 3 BCNFと3NFの違い

BCNFと3NFに関する次の記述のうち、正しいものはどれか。

  1. BCNFと3NFはまったく同じもので、呼び名が2つあるだけだとされているものである
  2. BCNFは画面の明るさの設定のことで、表の正規化とは無関係なものだとされているものだ
  3. BCNFは3NFをさらに厳しくした形で、よく似ているけれど実は別のものなのである
  4. BCNFは3NFよりゆるい形で、重複をわざと増やすためのものだとされているものだ
データスラ
データスラ 解答・解説

解答は 3 だよー。

BCNFは、3NFをさらに厳しくした形なのー。とてもよく似ているけれど、3NFと同じではなくて、BCNFのほうが一段きびしいよー。

選択肢1の「まったく同じ」、選択肢2の「明るさの設定」、選択肢4の「3NFよりゆるい・重複を増やす」はどれも誤りなのー。

選択肢判定理由
1同じではなく別もの
2明るさの設定ではない
3BCNFは3NFより厳しい形
4ゆるくない・重複は増やさない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る