IT

【超初心者向け】データベースの第一正規化/第二正規化/第三正規化とは?分かりやすく解説します!

本記事は教養記事シリーズその40です。その他の教養記事はコチラの目次をご覧ください。

★この記事の流れ★

第一正規化とは?
第二正規化とは?
第三正規化とは?

本記事は初学者の理解を優先しているため正確性に欠ける場合があります。致命的なミスはご指摘いただけますと助かります。

正規化

そもそも,正規化ってナニ…?

 

データベースの正規化というのは,データを整理して効率的に利用できるようにするための作業のことを指しています。効率的,というのは具体的には「冗長性の削除」「一貫性」「整合性」などが含まれます。要するに,データを扱いやすい形に変化させるのですが,そのときに何か矛盾が起こらないように気をつけましょうという話です。以下では,このようなデータに対して正規化を行っていきましょう。

正規化前のデータ

 

第一正規化

繰り返し構造をなくすこと

繰り返し構造というのは「セルが結合した状態」のことを指すと思ってください。みなさんはエクセルのセル結合をしたことがあるでしょうか。結合されたセルがある状態は,1つの行でデータを特定することができなくなってしまうため,データベースの管理上あまり望ましくありません。そのため,結合部分を分解してあげる必要があるのです。

ここに注目
結合解除

 

 

第二正規化

主キーの一部に依存している箇所を分離する

まずは,主キーについてお話しします。今回のデータが以下のような依存関係にあるとしましょう。

依存関係を示した図

つまり,「id」「母語」によって「国籍」「身長」「体重」「得点ランク」が定められます。そして,「得点ランク」によって「得点数」「アシスト数」が定められます。このとき,「id」「母語」のようなデータを支配する幹となる列名のことを主キーと呼びます。

第二正規化では,主キーに直接依存している部分と,主キーの一部に依存している部分に表を分離します。

主キーに直接依存する部分
主キーの一部に依存する部分
なぜ下の表に「得点ランク」が入っているのでしょうか。これは,得点ランクをも削除してしまうと,得点数とアシスト数の依存先が消えてしまい,定めることができなくなってしまうからです。

 

第三正規化

第二正規化によって分離された表で依存している箇所を分離する

第三正規化では,第二正規化によって分離された表において依存関係を整理します。今回の例で言うと,「得点数」と「アシスト数」は「得点ランク」に依存していますので,それぞれ分離してあげましょう。このとき,依存先である「得点ランク」はそれぞれの分離先で残すように注意してください。

このようにそれぞれの表を紐づける役割を果たすものを「外部キー」と呼びます。
分離先①
分離先②

これによって,3段階の正規化が完了しました。改めて,完成した表を見てみましょう。

主キーに直接依存する部分
分離先①
分離先②

 

ひとこと

この分野に関して詳しく説明している方が少なかったため,まとめてみました。今回の例がイマイチだったかもしれず,間違えがある可能性がございます。(もし発見されましたらご指摘いただけると助かります)。さらに関数従属という用語を使いたくなかったため「依存」という言葉に置き換えてしまいました。もっと良い例,その他フィードバックなどございましたらお待ちしております。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です