外部キー制約

外部キー制について考える機会があったのでメモしておきます〜

 

外部キー制約とは

外部キーは関連づけているテーブル間のデータの整合性を保つために存在する制約です。

外部キー制約を設定しておくと、存在しないidで外部キーを保存する事ができなくなります。

 

 

 

railsで外部キーを設定する

テーブル作成する時のマイグレーションファイルで外部キーとして設定したいカラムを以下のように設定します。

t.refernce  親モデル名, foreign_key: true

 

こうするとカラムは 親モデル名_id という名前で、外部キー制約が設定された状態で作成されます。

インデックスも貼ってくれます。

 

 

感想その他

モデルでバリデーションかけるとしても、データベースは必ず整合性の取れた状態であってほしいので、データベースレベルでの制約も必要ですね!!

自分が間違えてSQL実行してしまった場合にはモデルのバリデーションはあてになりませんし。。。