foreign_key: true(外部キー)
主キーと外部キーの違いと、関連付けのさいにforeign_key: trueをマイグレーションファイルに記述する意義について。
・主キーと外部キー
例としてTwitterは、一般的にUserが複数いて、それぞれのUserが複数のTweetをしている。ここで、Userテーブル(親)とTweetテーブル(子)があると仮定すると、それぞれのテーブルには、User及びTweetを識別するidが各々に存在していて、それぞれを識別するidのことを主キーという。
例) userテーブル
id: 1 name: 山田太郎
id: 2 name: 佐藤花子
例) Tweetテーブル
id: 1 body: おはようございます
id: 2 body: おやすみなさい
これだけでは、誰がどのTweetをしたのかがわからない。ここで外部キーを追加することで、誰が投稿したものなのかを区別することができる。ここでuserは複数のtweetを持っているため、
例)Tweetテーブル
id: 1 body: おはようございます user_id: 2
id: 2 body: おやすみなさい user_id: 1
上記のもののuser_idが、外部キーと呼ばれるもので、これによってUserとTweetテーブルに関連性を持たせることができる。
・foreign_key: trueについて
これは、テーブルのカラムに対して制約をかけることで不正なデータや予期せぬデータが保存されることを防ぐことができる。ここではTweetテーブルは、必ずUserテーブル(外部キーのuser_id)に紐づいていないといけないということになる。
・参考
この記事が気に入ったらサポートをしてみませんか?