本記事では、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図を書いていきます。
出典:https://it-koala.com/entity-relationship-diagram-1897#ER-4
##ER図の例
・1:1
2つのテーブルを直線で繋ぎ、1の関係を表す縦棒「|」を書き加えます。
・1:n(1:1以上)
nの関係にあたるテーブルに対して鳥の足を書き加えます。
・n:n(0を含む)
サークルは作ったけれども社員がいない場合や、社員がサークルに所属しない場合も考慮して、図のように0を表す○を鳥の足に書き加えます。
##中間テーブル
以下のようなn:nのリレーションが成り立つテーブルがあるとします。
このとき、userがcourseを持たない時(逆も然り)、無駄なカラムを持つことになります。
このようなDB設計はアンチパターンと言われ、好ましくない設計となります。
ではどうすればいいのでしょうか。
以下のようにuserとcourseの中間にデータの橋渡しをしてあげる中間テーブルを作成します。
そうすることでキレイなDB設計が可能となり、userやcourseが増えたとしても中間テーブルにデータを追加するだけでOKなのです。
##参考サイト
1.やさしい図解で学ぶ 中間テーブル 多対多 概念編
2.若手プログラマー必読!5分で理解できるER図の書き方5ステップ