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?

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

正規化ってなんぞ

データを利用しやすいように整理すること

冗長なデータ

ポケモン情報
ID  名前 タイプ トレーナー名 トレーナーの町 ポケモンの重さ ポケモンの高さ
1 のび太 メガネ ドラえもん ミライタウン 35.0kg 1.4m
2 スネ夫 エスパー ドラえもん ミライタウン 40.0kg 1.3m
3 ジャイアン かくとう ドラえもん ミライタウン 90.0kg 1.7m

これの何が冗長なんですか?
=>ドラえもんが引っ越した場合に面倒

ポケモン情報(トレーナー引越し後)
ID  名前 タイプ トレーナー名 トレーナーの町 ポケモンの重さ ポケモンの高さ
1 のび太 メガネ ドラえもん カコタウン 35.0kg 1.4m
2 スネ夫 エスパー ドラえもん カコタウン 40.0kg 1.3m
3 ジャイアン かくとう ドラえもん カコタウン 90.0kg 1.7m

3つもデータを書き換えないといけないね

正規化されたデータ

  • やること
    • トレーナーとポケモンの2つのテーブルに分ける
    • トレーナーテーブルのPK(ID)を、ポケモンテーブルのFK(トレーナーID)として関連付ける
トレーナー情報
ID トレーナー名 トレーナーの町
1 ドラえもん ミライタウン
ポケモン情報
ID 名前 タイプ トレーナーID 重さ 高さ
1 のび太 メガネ 1 35.0kg 1.4m
2 スネ夫 エスパー 1 40.0kg 1.3m
3 ジャイアン かくとう 1 90.0kg 1.7m

これでデータを1つ書き換えるだけでよくなった

もしポケモンが1025匹テーブルに登録されていたら
冗長なデータだと1025行書き換えが必要

フォロワー100万人とかのデータだったら
100万行書き換えが必要

それが正規化によって1行の変更で済むわけだ

感想

この辺り本で勉強してた頃は読み飛ばしてた気がする
実務だと基本設計の時に使う大事な考え方である
アウトプットしないとやっぱり身につかない
アウトプット大事

参考

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?