1
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.

【DB設計】No.2「超簡単に正規化を説明してみた」

Posted at

本記事では正規化を超簡単にシンプルに説明します。
他の記事では学術的にDB設計を書きましたが、それを抜きにしてシンプルな説明のみを使っています!

正規化とは

正規化とは、**「データの繰り返しを無くす」**ことです。

具体的に見てみると、以下のようなテーブルが存在したとき、「商品C」という商品名が繰り返していることがわかります。
この繰り返しを無くすために、2枚目の画像のように、商品テーブルを作成して、1:nの関係を構築していくのが正規化です。
スクリーンショット 2020-06-07 14.57.57.png
スクリーンショット 2020-06-07 14.59.38.png

正規化のやり方

正規化のやり方は一般的に「第1正規形」→「第2正規形」→「第3正規形」という順序で行っていきます。
これを超簡単に説明すると、以下のように言い換えられます。

1.横方向の繰り返しを無くす
2.縦方向の繰り返しを無くす

横方向の繰り返しを無くす(=第1正規形)

まず横方向の繰り返しを無くしていきます。
以下のようなテーブルが存在したとき、横方向に商品A・商品C・商品Dのように商品が繰り返し並んでいることがわかります。
スクリーンショット 2020-06-07 15.04.18.png
これを下の図のように縦方向に伸びるように並び替えます。
スクリーンショット 2020-06-07 15.06.58.png

縦方向の繰り返しを無くす(=第2正規形&第3正規形)

次に縦の繰り返しについて見ていきましょう。
注文番号0001に注目してみると、縦方向に繰り返しているのはカラム名が灰色になっている部分です。
そして、青色の部分はバラバラになっています。
よって縦方向の繰り返しを無くすには、青色の部分を「商品テーブル」として分離させる必要があります。
スクリーンショット 2020-06-07 15.11.46.png
そうすると以下のように、注文番号で紐付けられた2つのテーブルが作成できます。
スクリーンショット 2020-06-07 15.16.29.png
しかしまだ縦方向の繰り返しが存在していることにお気づきでしょうか?
それはカラム名が青色の部分と赤色の部分です。
これを別のテーブルとして作成して、1:nの関係を作っていきます。
スクリーンショット 2020-06-07 15.33.35.png
最後に、まだユーザーテーブルの送料区分が繰り返しとなっているので別のテーブルを作成します。
スクリーンショット 2020-06-07 15.36.44.png

まとめ

正規化は難しく言葉で説明すると、「第1正規形」「推移従属」などの言葉が出てきます。
しかし、正規化で行っていることは以下の2点であることを理解しておいておください。

1.横の繰り返しを無くす
2.縦の繰り返しを無くす

このシンプルなことを理解しておけば正規化はOKなのです!

参考サイト

リレーショナルデータベース正規形の種類と正規化手順

1
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
1
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?