【DS検定対策16】データベースの正規化をお弁当で理解|初心者向け図解

データサイエンス

またもや出ました「正規化」。しかも似たような言葉がいろいろあってややこしいですね。
正規化、正則化、標準化…。お願いだから違う名前にしてほしい!今回はその中でもデータベースの正規化について整理します。
なお、ここでの整理は、ChatGPTにお弁当例を作ってもらいました(笑)

データベースの表は、情報を詰めた「お弁当箱」のようなもの。正規化とは、このお弁当箱の中身をきれいに整理する作業です。ぐちゃぐちゃに詰め込まれたおかずを、ちゃんと仕切って、取り出しやすくするイメージです。

🧾 未正規化(整理前のお弁当)

お弁当IDおかず作った人職業
A001卵焼き, ウインナー, 焼き魚お母さん, お母さん, お姉さん料理教室の先生, 料理教室の先生, 学生

👉 1行に複数の情報が詰め込まれていて、取り出しにくい状態。

🥇 第一正規化(1つの行に1つの情報)

お弁当IDおかず作った人職業
A001卵焼きお母さん料理教室の先生
A001ウインナーお母さん料理教室の先生
A001焼き魚お姉さん学生
  • カンマ区切りをやめ、1行に1つの情報だけを入れる
  • これで「取り出しやすいお弁当」になる
  • この状態が各カラムが原子的(単一の値)であるという状態
  • 「繰り返しグループの排除」や「複数値の分離」

🥈 第二正規化(おかずに関係ある情報を分ける)

 まずは第一正規化を満たしていることが前提

お弁当表

お弁当ID(主キー)おかず(主キー)
A001卵焼き
A001ウインナー
A001焼き魚
  • この表は「どのお弁当に何のおかずが入っているか」を記録
  • 主キーは「お弁当ID+おかず」の複合主キー

おかず表

おかず(主キー)作った人(非キー)職業(非キー)
卵焼きお母さん料理教室の先生
ウインナーお母さん料理教室の先生
焼き魚お姉さん学生
  • お弁当表 と おかず表 に分けることが 部分関数従属の排除
  • 「作った人・職業」はおかずに関係ある情報 というのが 主キー(おかず)に完全従属している状態

🥉 第三正規化(作った人ごとに職業をまとめる)

 まずは第二正規化を満たしていることが前提

おかず表

おかず作った人
卵焼きお母さん
ウインナーお母さん
焼き魚お姉さん

作った人表

作った人職業
お母さん料理教室の先生
お姉さん学生
  • 「職業」は「作った人」に関係ある情報
  • 同じ人が何度も登場しないようにまとめることでムダがなくなる

🧭 用語のかみ砕きまとめ

用語やさしい言い方たとえ
主キー「この行はこれ!」と決める番号や組み合わせお弁当のラベル(A001など)
主キーに関係ない情報その行の番号とは関係ないけど、別の項目に関係ある情報「卵焼き」に関係ある「作った人」など
間接的な依存関係情報が直接ではなく、別の項目を通じてつながっている「卵焼き → お母さん → 職業」

試験に出る用語で整理

正規化段階やっていること試験でのキーワード例
第一正規化重複の排除・結合の解除原子的・繰り返しグループの排除
第二正規化主キーに関係ない情報を
別テーブルに分ける
部分関数従属の排除・
複合主キー
第三正規化間接的に関係ある情報を
さらに別テーブルに分ける
推移的関数従属の排除

正規化の効果

  • 情報のムダがなくなる(同じ人・同じ職業を何度も書かなくて済む)
  • データの整理が進み、変更や検索がしやすくなる
  • 「分ける理由」が見えるようになる

正規化・正則化・標準化・白色化の違い

混乱ワードの正規化、正則化、標準化、白色化の違いを明確にする表を最後にまとめておきます

用語意味関連キーワード
(DS検定で登場)
正規化(DB)データベースの表を整理して冗長性や不整合をなくす第一正規化
第二正規化
第三正規化
非正規化
正規化(スケーリング)データの値の範囲や尺度をそろえる前処理
 0ー1のスケールに変換
Min–Max正規化
Max–Absスケーリング
単位ベクトル正規化
ロバストスケーリング
標準化データの前処理
 平均0・分散1
Zスコア標準化
標準正規分布
白色化データを無相関化
 分散を等しく
主成分分析(PCA)、
ZCA白色化、白色ノイズ
正則化モデルが複雑になりすぎないように罰則を加えて過学習を防ぐL1正則化(Lasso)
L2正則化(Ridge)
Elastic Net
ドロップアウト

コメント