0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

5分で復習しな!第一正規化から第三正規化

Last updated at Posted at 2025-05-15

正規化を最短でまとめる

なぜかって?ちょっと復習をしようと思ったら、
難しい言葉で書かれていて理解するのに時間がかかったからだ。

正規化をする理由!

  • 見やすくする!
  • 修正があった場合に一箇所修正すれば全て反映されるようにする!
    • 何箇所も修正する手間をなくす。(ミスが無くなる)

ぐちゃぐちゃ表(未正規化)

商品名 価格 仕入先 仕入先住所 カテゴリー
りんご 100円 青森農園, 長野農園 青森県xxx, 長野県yyy 果物
みかん 80円 愛媛農園 愛媛県zzz 果物
キャベツ 120円 群馬農園, 茨城農園 群馬県aaa, 茨城県bbb 野菜

*1つのセルに複数の値が入っていて読みにくい!


第一正規化

1セル1データに分割

商品名 価格 仕入先 仕入先住所 カテゴリー
りんご 100円 青森農園 青森県xxx 果物
りんご 100円 長野農園 長野県yyy 果物
みかん 80円 愛媛農園 愛媛県zzz 果物
キャベツ 120円 群馬農園 群馬県aaa 野菜
キャベツ 120円 茨城農園 茨城県bbb 野菜

*行を増やして 1行=1仕入れ先 に整理。
これで行の長さが統一されてRDBに入れられるようになった。


第二正規化

主キーとそれにつながるデータを別テーブルに分割

  • 商品名が決まれば価格とカテゴリーが決まる
  • 仕入先が決まれば住所が決まる

商品テーブル(products

商品名が決まれば価格とカテゴリーが決まる。

商品ID 商品名 価格 カテゴリーID
P1 りんご 100円 果物
P2 みかん 80円 果物
P3 キャベツ 120円 野菜

仕入先テーブル(suppliers

仕入先が決まれば住所が決まる。

仕入先ID 仕入先名 住所
S1 青森農園 青森県xxx
S2 長野農園 長野県yyy
S3 愛媛農園 愛媛県zzz
S4 群馬農園 群馬県aaa
S5 茨城農園 茨城県bbb

これ以上はもう分割できない。

取引テーブル(product_supplier

分割した元のテーブルはこうなる

商品ID 仕入先ID
P1 S1
P1 S2
P2 S3
P3 S4
P3 S5

主である取引テーブルはもう分割できない。


第三正規化(無関係な情報もさらに分割)

第二正規化で分割したテーブルを確認して重複があるものを更に分割する。

商品テーブルがまだ正規化できる。

カテゴリーテーブル(categories

カテゴリーID カテゴリー名
C1 果物
C2 野菜

↑これ以上はもう分割できない。

更新後の商品テーブル

商品ID 商品名 価格 カテゴリーID
P1 りんご 100円 C1
P2 みかん 80円 C1
P3 キャベツ 120円 C2

↑これ以上分割できない。


まとめ

  • 第一正規化
    • 1つのマスに1つのデータ
  • 第二正規化
    • レコードテーブルから主キーになるテーブルを作成して分ける。重複データを別テーブルへ
      • レコードテーブルを分割できない状態にする
  • 第三正規化
    • 分割した先のテーブルで更に分割する
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?