3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

正規化とは

実績あの事象や情報を矛盾なく管理するために、形式化することやその手順のことを
正規化という
正規化したものを正規形といい,
条件を満たしていないものを非正規形という

第1正規形

  • 各列が原子値(それ以上分解できない値)である
  • 繰り返しの集合を持たない
  • 主キーが存在する

例1:連絡先データベース

非正規形

image.png

問題点:

  • 電話番号とメールアドレスが複数の値を含む
  • データの検索や更新が困難
  • 値の数が不定

正規形

image.png

このように3つのテーブルに分けることで、データの検索や更新・削除が簡単になり、データの整合性やデータ操作の一貫性が確保される。

ポイント

  • 繰り返しデータを別テーブルに分割する
  • 複数の値を含む列を分解する
  • 適切な主キーを設定する
  • テーブル間の関連を明確にする
    ER図
    image.png

第2正規形 (2NF)

  • 第1正規形(1NF)である
  • 部分関数従属が存在しない(完全関数従属である)

部分関数従属とは?
複合主キーの一部の列だけで他の列が決定される関係のことを指す。 第2正規形では、主キー以外の列は、主キー全体に対して完全に依存している必要がある。

例:注文データベース

非正規形

image.png

問題点:

  • 商品名と単価は商品IDのみで決定される(部分関数従属)
  • データの重複が発生している
  • 更新時の不整合が起きやすい

正規形

image.png

このように,注文データベースを注文明細テーブルと商品テーブルに分けることでデータの重複が減少し、データの一貫性が向上や更新時の異常が防止、効率的なストレージの使用が可能になる

ポイント

  • 複合主キーの識別と分解
  • 部分関数従属性の除去

テーブル設計のポイント
ER図
image.png

第3正規形 (3NF)

  • 第2正規形(2NF)である
  • 推移的関数従属が存在しない

推移的関数従属とは?
A → B かつ B → C という関係がある場合、A → C という関係が推移的に成立すること。 つまり、主キー以外の列が、他の非キー列に依存している状態を指す。

例:書籍販売データベース

非正規形

image.png

推移的関数従属の例:
注文ID → 出版社ID → 出版社名、出版社住所

問題点:

  • 出版社情報が重複している
  • 出版社情報の更新が複数箇所必要
  • データの不整合が発生しやすい

正規形

image.png

このように3つのテーブルに分けることで、データの重複が最小限に抑えられ、データの一貫性が確保でき、データの更新が容易になり、効率的なストレージの使用が可能になっている。

ポイント

  • 推移的関数従属を見つける
  • 適切にテーブルを分割する
  • 外部キーを使用して関連付ける
  • インデックスを適切に設定する

ER図
image.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?