データベースを勉強し始める方に取って最初の難関が「正規化」です。
正規化には第1正規化から第5正規化まであります。
- 第1正規化
- 第2正規化
- 第3正規化
- 第4正規化
- 第5正規化
正規化の目的
- データの冗長性をなくすため
- データの更新時に不整合が起きづらいようにするため
非正規形
正規化されていない状態のテーブルを「非正規形」と呼びます。
第1正規化
- テーブルの行を一意に特定するための主キーを設定します。
- 繰り返し現れる列のデータをグループ化して、別の表に切り離します。
- 導出項目(他の属性から算出できる項目)を削除します。
※一意(いちい)とは「こうであると、値が1つに特定している状態」のことを言います。
第2正規化
主キーに他の列が完全関数従属している状態にすることを「第2正規化」と言います。
完全関数従属とは
ある列の値(A)が決まれば、別の列の値(B)が一意に決まるとき、(B)は(A)に関数従属していると言えます。
■表記
「A → B」
関数従属の表し方
- A が B に関数従属している ← 「B → A」
- Z が A と B に完全関数従属している ← 「{A,B} → Y」
- Z が A に部分関数従属している ← 「{A,X,Y} → Z」かつ「A → Z」
- C が A に推移関数従属している(A が決まると B が決まり、B が決まると C が決まる) ← 「A → B → C」かつ「A → C」
第3正規化
第2正規化したテーブル内の主キー以外の列に注目します。
主キー以外の列の間の(非キー列間の)関数従属性を取り除いたものが第3正規形と言います。
非キー列の関数従属性のことを「主キーからの推移的関数従属」と言います。
推移的関数従属とは「Xが決まればYが決まり、Yが決まればZが決まる」ことを言います。
正規化をしないとどうなるのか?
データの更新を続けていくとデータの不整合が発生する可能性があります。
PostgreSQL シリーズ
今まで学習した PostgreSQL の技術をシリーズとしてまとめました。
【PostgreSQL】PostgreSQL の特徴と基本【Part.1】
【PostgreSQL】【正規化】リレーショナルデータベース(RDMS)の基本【Part.2】
【PostgreSQL】PostgreSQL のインストールと初期設定【Part.3】
【PostgreSQL】PostgreSQL の標準付属ツールの説明とコマンド手順【Part.4】
【PostgreSQL】PostgreSQL の設定ファイル(postgresql.conf、pg_hba.conf)の解説【Part.5】
【PostgreSQL】PostgreSQL のバックアップ手順とリストア手順【Part.6】
【PostgreSQL】PostgreSQL の運用管理(ユーザー管理、バキューム)【Part.7】
【PostgreSQL】PostgreSQL の基本的な SQL文 とオブジェクトについて【Part.8】
【PostgreSQL】PostgreSQL の組み込み関数、ユーザー定義関数、演算子について【Part.9】
【PostgreSQL】PostgreSQL のトランザクションについて【Part.10】
【PostgreSQL】SQL文【Part.11】
【PostgreSQL】テーブル設計(データ型、制約)【Part.12】
コメント