<DAY82>中間テーブルについて
学習状況
●学習日数 82日
●学習時間(本日) 3時間
●累計学習時間 286.0時間
●一日あたりの平均学習時間 3.48時間
はじめに
1対多のテーブル構造であれば作る事ができるが、
多対多の関係性の構築が必要な場合だと、少し詰まったので、忘備録の為にまとめる。
中間テーブルとは
テーブル間の関係性が多対多となりうる場合に、
テーブルとテーブルを繋ぐ為のあえて作成するテーブルである。多対多の復習をしていく。
以下多対多の関係
lessonsクラスで授業の要素を管理。
studentsテーブルで生徒名を管理。
太郎が英語と、数学を受講しているデータを管理。 studentsから見てhas_manyの関係である。 国語の授業は、一郎と三郎よって受講されているデーターを管理したい。 lessonsから見てhas_manyの関係である。
この場合中間テーブルがないとカラムが増え、構造的NGなテーブルができてしまうので、中間テーブルを作成する事でシンプルで無駄のない管理ができる。
railsに置き換えた場合
モデルにはこのように記載。
class Lesson < ActiveRecord::Base has_many :lesson_student has_many :student, through: :lesson_student end class Student < ActiveRecord::Base has_many :lesson_student has_many :lesson, through: :lesson_student end # 中間テーブル class LessonStudent < ActiveRecord::Base belongs_to :lesson belongs_to :student end
他にも、定義方法はあるがとりあえずはこれで覚えておく。
railsguides.jp
ここに細かく書いているので、時間を見ながら解読しておく。
最後に
書いてみると、そこまで難しい概念ではないと改めて感じた。
但し、リレーションなど、実際にアプリ制作しながらでないと
使うタイミングをイメージできないメソッドもある。
勉強しまくるぞ!