IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

外部キーは親テーブルと子テーブルのどちらに設定すれば良いのか?

 調べてみる

結論から言うと、「状況による」とのこと。とはいえ、外部キーは子テーブルで使う場合が多い。

f:id:matt-note:20190128121343p:plain

f:id:matt-note:20190128121352p:plain

 

そもそも子テーブルとは?

参照する側のテーブルを子テーブルと呼ぶ。以下の例では、子テーブルの orderinfo テーブルが、親テーブルの isbn を参照している。というわけで、ここでは orderifo テーブルが子テーブルになる。

f:id:matt-note:20190128121632p:plain

 

以下の Rails の例では、親テーブルが users テーブルで、子テーブルが posts テーブルとなっている。ここで、子テーブルの posts テーブルで user_id を設定している。

f:id:matt-note:20190128131816p:plain

 

まとめ

少なくとも、Rails では外部キーを子テーブルで設定しておくものと考えておくと、少し荷が降りる気がする。