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)に紐づいていないといけないということになる。

・参考

外部キー(foreign_key: true)

この記事が気に入ったらサポートをしてみませんか?