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?

More than 3 years have passed since last update.

データベースの正規化について

Posted at

#正規化とは
データベースのデータ構造をより効率的で重複や無駄のないシンプルな構造にするための手順のことです。

正規化をしたあとのデータベースの構造を正規形
してないデータベースの構造を非正規形と言います。

正規化には順番があります。
非正規形→第一正規形→第二正規形→第三正規形・・・

##なぜ必要か
映画館の場所と、鑑賞できる作品に対する1日あたりの観客動員数を、管理するためのテーブルがあったとします。

※mobilization = 1日あたりの動員数

id store movie1_title movie1_mobilization movie2_mobilization
1 原宿 名探偵コナン 1,000 1,500
2 新宿 ハリーポッター 2,000 3,000
3 渋谷 クレヨンしんちゃん 3,500 3,000

#####このテーブルの問題点
・重複するカラムがある
・一つのテーブルに、映画館と観客動員のエンティティが存在している

#####重複してる
movie1_titleやmovie2_titleなど、1つの映画館に対して繰り返されている。
カラム追加したいときに、 movie3_title、movie3_mobilizationとなってしまい、冗長になります

#####一つのテーブルにエンティティが混在している。
1つのテーブルに「映画館の場所情報」と「観客動員の情報」という別のエンティティが含まれてます。
この場合、場所が重複してしまうことがあり、テーブルの可読性などが下がります

#順番

###第一正規形
同一のカラムが存在しないかつ、レコードを構成する1つ1つのマスに、値が1つずつ入っている状態。
テーブル内に重複するカラムをなくすためです。

###第三正規形
主キーに依存しているかつ非キー属性(簡単に言えば、主キーではないもの)同士の依存がない状態。
1つのテーブルに映画館の場所と観客動員のエンティティが混在しているためです。

#正規化のデメリット
正規化は手順を進めるほどに、パフォーマンスが低下します。(小さなテーブルが増えていくから)
関連するテーブルを検索するたびにSQLを実行する回数が増えて、速度が低下します。
そこで正規形は必要最低限のレベルである第三正規形で終えることが多いです。

#####今回は以上になります。最後まで読んでいただきありがとうございます!

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?