## プログラミング初学者が学習する中間テーブルについて
-
Railsなどのフレームワークを学習していて『中間テーブル』という言葉がよくわからなかったので備忘録も兼ねて解説します! (初投稿なので温かく見守ってください泣)
-
中間テーブルってなんなの??
-
具体的な使い方
中間テーブルってなんなの??
中間テーブルとは・・・データベースで、テーブルとテーブルの多対多の関係を表すテーブルのこと。
これだけ言われてもパッとしないかもしれません。イメージしてみましょう!
データベースにuserテーブルとgroupテーブルというのが存在すると仮定します。
userテーブル
id | name |
---|---|
1 | 山田 |
2 | 佐藤 |
3 | 鈴木 |
4 | 田中 |
〜 | 〜 |
groupテーブル
id | group-name |
---|---|
1 | Aグループ |
2 | Bグループ |
3 | Cグループ |
4 | Dグループ |
〜 | 〜 |
以上二つのテーブルから誰がどのグループに属しているかを表現してみると、、
id | name | group |
---|---|---|
1 | 山田 | Bグループ |
2 | 佐藤 | Cグループ |
3 | 鈴木 | Aグループ |
4 | 田中 | Cグループ |
〜 | 〜 | 〜 |
このようにuserテーブルにgroupカラムを追加することで解決できます。
しかし!
userがいくつものgroupに所属できるようにしたい!と考えました
*例えば通話アプリの『LINE』でも複数の『グループ』に所属できますよね!
すると、、
userテーブル
id | name | group1 | group2 | group3 | group4 |
---|---|---|---|---|---|
1 | 山田 | Bグループ | Cグループ | Aグループ | |
2 | 佐藤 | Cグループ | Aグループ | Dグループ | Bグループ |
3 | 鈴木 | Aグループ | |||
4 | 田中 | Cグループ | Bグループ |
これじゃ、空のカラムが大量発生するじゃないか!!!(親父ギャグ)
- カラムどんだけ追加しないとダメなんだ・・・
- DB設計時にどれだけカラムを用意しなければならないんだろう・・・予測できない・・
- 空のカラムはエラーの元じゃないか・・・
####ここで登場するのが 中間テーブル です
##中間テーブルの具体的な使い方
userテーブル
id | name |
---|---|
1 | 山田 |
2 | 佐藤 |
3 | 鈴木 |
4 | 田中 |
〜 | 〜 |
groupテーブル
id | group-name |
---|---|
1 | Aグループ |
2 | Bグループ |
3 | Cグループ |
4 | Dグループ |
〜 | 〜 |
新たに以下のテーブルを追加!
group_userテーブル
id | user | group |
---|---|---|
1 | 山田 | Bグループ |
2 | 山田 | Cグループ |
3 | 山田 | Aグループ |
4 | 佐藤 | Cグループ |
5 | 佐藤 | Aグループ |
6 | 佐藤 | Dグループ |
7 | 佐藤 | Bグループ |
8 | 鈴木 | Aグループ |
〜 | 〜 | 〜 |
-
このように中間テーブルを追加することで空のカラムもなくなり、その都度追加する必要があったカラムも追加せずに済むことができます。さらに誰がどのグループに所属しているかが見やすくなりました。
-
データベースの設計をしていく際には空のカラムが発生しないか、チームとして開発を進めていく中で見やすいDBができているかを考える必要があると思うので覚えておきましょう!!!
初投稿となりましたが、何かわかりにくい点や誤って理解してしまっている点などあればご教授願います。では!