##外部キーとは
二つのテーブル間の列同士で設置するもの
親テーブルと子テーブルの間で整合性を取ることができるようにする
→ 外部キー制約
###外部キー制約
親テーブルのデータを変更、削除しようとした時、子テーブルでデータが使われている場合、エラーにしたり同時に変更、削除するという選択が行える
##外部キーのメリット・デメリット
メリット
- 関係が適切に設計されている場合、DBで不整合を引き起こすことが少なくなる
- DBサーバで制約チェックが行われるため、アプリケーション側でのチェックが不要
- 連鎖更新及び削除をすると、アプリケーションコードの単純化になる
- 適切に設計された外部キールールでは、テーブル間の関係記述に役立つ
デメリット
- キー関係を設計する上で、循環ルールや連鎖削除の不適切な組み合わせなどの深刻な問題が生じることがある
- データベースレベルでの余分なチェックによるパフォーマンスの低下
##まとめ
Rails の設計において、関連性のあるテーブルは外部キー制約を設けている。
調べてみてわかったことは、外部キー制約を設けることで、各テーブル同士での整合性が確保しやすくなるということだった。
私が設計しているものは非常に小規模で、また単独で制作しており、複雑化することは考えにくいため基本的には制約を設けていきたい。
規模が大きくなればなるほど、実際にコードを書く前にしっかりとした設計を考えておく必要があると感じた。