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?

この記事は自分用の備忘録です。

昨日のつづき

正規化とは?


正規化には3つの形があるそうな。

第1正規形(1NF):データの「原子性」を保証する

データを「最小単位」に分解し、繰り返しデータ(重複するカラム)を排除。

例:冗長なデータ

ポケモン情報

ID 名前 タイプ1 タイプ2 トレーナー名
1 ピカチュウ でんき NULL サトシ
2 フシギダネ くさ どく サトシ
3 ニャース ノーマル あく ロケット団

正規化後(1NF)

ID 名前 タイプ トレーナー名
1 ピカチュウ でんき サトシ
2 フシギダネ くさ サトシ
3 フシギダネ どく サトシ
4 ニャース ノーマル ロケット団
5 ニャース あく ロケット団

第2正規形(2NF):部分従属の排除

主キー(PK)に対して、すべての非キー属性を「完全従属」させる。

例:冗長なデータ

ポケモン情報

ポケモンID トレーナーID 名前 重さ 高さ トレーナー名
1 1 ピカチュウ 6.0kg 0.4m サトシ
2 1 フシギダネ 6.9kg 0.7m サトシ
3 2 ニャース 4.2kg 0.5m ロケット団

正規化後(2NF)

トレーナーテーブル

トレーナーID トレーナー名
1 サトシ
2 ロケット団

ポケモンテーブル

ポケモンID トレーナーID 名前 重さ 高さ
1 1 ピカチュウ 6.0kg 0.4m
2 1 フシギダネ 6.9kg 0.7m
3 2 ニャース 4.2kg 0.5m

第3正規形(3NF):推移従属の排除

主キーに直接関係しない列(非キー属性)を別テーブルに分ける。

例:冗長なデータ

ポケモン情報

ポケモンID トレーナーID 名前 重さ 高さ トレーナー町
1 1 ピカチュウ 6.0kg 0.4m マサラタウン
2 1 フシギダネ 6.9kg 0.7m マサラタウン
3 2 ニャース 4.2kg 0.5m ハナダタウン

正規化後(3NF)

トレーナーテーブル

トレーナーID トレーナー名 トレーナー町
1 サトシ マサラタウン
2 ロケット団 ハナダタウン

ポケモンテーブル

ポケモンID トレーナーID 名前 重さ 高さ
1 1 ピカチュウ 6.0kg 0.4m
2 1 フシギダネ 6.9kg 0.7m
3 2 ニャース 4.2kg 0.5m

感想

まだ理解が浅いので、もう少し後で深ぼって編集する。

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?