0
2

More than 3 years have passed since last update.

【DB設計】No.1「DBのリレーションとER図」

Last updated at Posted at 2020-06-03

本記事では、DBの基本中の基本であるDBのリレーション(関係)について。
次に、そのリレーションを図ではどのように表現するのかを書いていきたいと思います。

リレーションとは

リレーションとは簡単に言うと、テーブル同士の関係性を表します。
具体的にみてみると、データベースのリレーションには以下の3つの関係性があります。

1:n(一対多)
「会社」と「社員」というテーブルが存在するとき、1つの会社に複数人の社員が存在するので、この両者の関係は1:nになっていると言えます。

n:n(多対多)
「サークル」と「社員」というテーブルが存在するとき、1人の社員は複数のサークルに所属することができます。そして、サークルには複数の社員が存在します。
よってこの両者の関係はn:nになっていると言えます。

※n:nの場合、中間テーブルを用いてDBを構成します。詳しくは後ほど説明します。

1:1
「社員」と「個人情報」というテーブルが存在するとき、1人の社員は1つの個人情報を持っています。
よってこの両者の関係は1:1になっていると言えます。

ER図の書き方

まずER図には原則として以下の決まり事があります。
これを元にER図を書いていきます。
スクリーンショット 2020-06-04 3.00.07.png
出典:https://it-koala.com/entity-relationship-diagram-1897#ER-4

ER図の例

・1:1
2つのテーブルを直線で繋ぎ、1の関係を表す縦棒「|」を書き加えます。
スクリーンショット 2020-06-04 3.03.50.png

・1:n(1:1以上)
nの関係にあたるテーブルに対して鳥の足を書き加えます。
スクリーンショット 2020-06-04 3.05.43.png

・n:n(0を含む)
サークルは作ったけれども社員がいない場合や、社員がサークルに所属しない場合も考慮して、図のように0を表す○を鳥の足に書き加えます。
スクリーンショット 2020-06-04 3.09.15.png

中間テーブル

以下のようなn:nのリレーションが成り立つテーブルがあるとします。
このとき、userがcourseを持たない時(逆も然り)、無駄なカラムを持つことになります。
このようなDB設計はアンチパターンと言われ、好ましくない設計となります。
スクリーンショット 2020-06-04 3.17.00.png

ではどうすればいいのでしょうか。
以下のようにuserとcourseの中間にデータの橋渡しをしてあげる中間テーブルを作成します。
そうすることでキレイなDB設計が可能となり、userやcourseが増えたとしても中間テーブルにデータを追加するだけでOKなのです。
スクリーンショット 2020-06-04 3.22.50.png

参考サイト

1.やさしい図解で学ぶ 中間テーブル 多対多 概念編
2.若手プログラマー必読!5分で理解できるER図の書き方5ステップ

0
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
0
2