その他

リレーショナルデータベースの正規化について

スポンサーリンク

はじめに

今回はデータベースについてです。まったく知らなかった内容なのですが、データサイエンス100本ノックで、必要となったので調べました。せっかくなので備忘録で残しておきます。以下のページを参考にさせていただきました。

リレーショナルデータベース正規形の種類と正規化手順 - プロエンジニア
フリーランスITエンジニア専門の案件紹介・転職支援エージェント【プロエンジニア】

テーブル正規化の種類

正規化が行われておらず、一つのテーブルの中に同じような値が複数回登場するような表(テーブル)を、非正規形と呼びます。

ProEngineer https://proengineer.internous.co.jp/content/columnfeature/6480#section400

人の目で見てわかりやすいですが、繰り返し項目が存在する状態です。データが追加されるたびに横方向に伸びていってしまいます。

第1正規形

第1正規化では、横方向の繰り返しを整理します。横方向に繰り返しになっている部分を特定して、繰り返しが縦に並ぶようにします。このようにすることで、データが追加になるたびに縦にデータが追加されるようになります。

この形にした後は、候補キーを探します。 テーブルの中で1つのレコード(ユニーク)を特定できるカラム。またはカラムの組み合わせが候補キーです。

候補キーを洗い出したのち、レコードを一意に決めることができる主キーを決める、というプロセスをふみます。※主キーではNullは許されない、という制約があります。

第2正規形

主キーを構成する一部のカラムによって決まるもの(部分関数従属)を別テーブルにすると第2正規形となります。 これは、第1正規形では、同じデータが繰り返される部分を、別テーブルに切り離す作業になります。

第3正規形

主キー以外のカラム(非キー)によって決まるものを別テーブルにすると第3正規形となります。 ステップとして、まずは主キーとの主従関係で決まるものの対応(第2正規形)、それ以外で決まるもの(第3正規形)ということなんですね。

スポンサーリンク

まとめ

普段、なにげなく利用しているだけでしたが、いろいろと考えられてテーブルが構成されているのですね。ただ、正規化しすぎると、結局データを扱うときに結合する手間が増える、という側面もありそうですね。利用シーンまで考慮するのがよさそうです。

コメント

タイトルとURLをコピーしました