3
4

More than 5 years have passed since last update.

外部キーと rails の add_foreign_key の意味

Posted at

外部キー(foreign key) という用語は、下の二つの意味で用いられるので混乱しやすい。

  1. あるテーブルが、他のテーブルを参照している時、参照元のカラム(またはその組)のこと。
  2. 上のカラムが持つべき制約のこと。外部キー制約 とも言う。レコードの作成/更新/削除がなされたとき「参照先のレコードが見つからない」ようなレコード(=迷子のレコード)を作らないようにする制約。

SQL では、CREATE 文もしくはALTER TABLE文の中で、 FOREIGN KEY 句を使って外部キー制約を与えることができる。細かい指定がない場合、レコードの作成に対する制約だけがかかる。

Rails では migration のファイルに add_foreign_key メソッドを使って外部キー制約を与えることができる。オプションを与えない場合は、やはりレコードの作成に対する制約だけがかかる。

参考
http://b.pyar.bz/blog/2014/10/21/foreigner/
http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_foreign_key
http://www.postgresql.jp/document/9.3/html/ddl-constraints.html#DDL-CONSTRAINTS-FK
http://www.postgresql.jp/document/9.3/html/sql-createtable.html#SQL-CREATETABLE-EXCLUDE

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4