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 1 year has passed since last update.

 【Laravel/MYSQL】データベースの正規化とは/メリット・デメリットについても解説!!

Posted at

今回はデータの正規化について説明していきます。
プログラミングを勉強していくとよく正規化ということを耳にすることが多くなります。
正規化とはいったい何なのかについて解説していきます。
そのメリット・デメリットについても説明するので良かったら参考にしてください。

正規化とは

データベースの正規化とは、データベース設計の工程において同一テーブル内のデータの重複をなくすために、適宜データを分割・整理することです。

(例)正規化なし

注文番号 注文者名 電話番号 品名 数量 仕入れ先
111 山田太郎 090-111-222 きゅうり 5 山田農場
112 高田玲奈 070-333-444 レモン 10 高田商事
113 倉敷颯太 080-555-666 そうめん 30 気楽製粉

正規化をしていない場合だと全ての情報が一つのテーブルで管理しています。

(例)正規化あり

・注文テーブル

注文番号 注文明細番号 商品名 数量
111 1 きゅうり 5
112 2 レモン 10
113 3 そうめん 30

・注文者テーブル

注文番号 注文者  電話番号
111 山田太郎 090-111-222
112 高田玲奈 070-333-444
113 倉敷颯太 080-555-666

・商品情報テーブル

商品番号 商品名 仕入れ先コード
1 きゅうり 1A
レモン 2B
そうめん 3C

正規化することによってテーブルごとに情報を分けることができ、見やすくなりました。
カラムの中身を見ればそれぞれどんな情報が管理されているか何となく理解できそうですね。

正規化すること、しないことによるメリット・デメリット

正規化することへのメリット・デメリット

メリット
テーブル1つで完結するため、結合ありと比べてSQLの処理が速い

デメリット
もし値を変更(例:完了→済 など)しなければならなくなったら、全てのtodo行を更新しなければならず変更コストが高い

正規化しないことへのメリット・デメリット

メリット
もし値を変更することになってもprogressテーブルの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?