中間テーブル
データベース設計においては、
エンティティ同士のリレーションをER図に表すが
中には、多対多
のリレーションになるエンティティが出てくる。
そういったリレーションをデータベースで表現する場合は、中間テーブル
というものを用いる。
エンティティ同士の組み合わせを記録するテーブルを作り
一対多の関係を経由することで、多対多のエンティティを繋げることができる。
railsにおいてA-B(多対多)のテーブルの間に中間テーブルを設ける場合は、
As_Bsテーブルとして、
その中間テーブルのアソシエーションは、
belongs_to :A
belongs_to :B
となって、
A,Bテーブルのアソシエーションは、
has_many :As_Bs
has_many :B, through: :As_Bs
となるみたい。
テーブル名は必須ではなく、適切な名前がなかった場合の慣例?っぽい。
テーブル定義を行う際は、制約
とインデックス
を想定しておくのを忘れずに!