第2章 の weather テーブルと cities テーブルを思い出してください。つぎのような問題点を考えてみましょう。cities テーブルに一致する項目が無い行は絶対に weather テーブルに挿入できなくしたいとします。これをデータの参照整合性の保全と呼びます。最も単純なデータベースシステムでは cities テーブルに一致する行が存在するかどうかを最初に検証してから新規 weather レコードを追加するか否かの実装をしなければなりません。この手法には多くの問題があること、そしてとても不便ですので PostgreSQL が代わって作業してくれます。
新規のテーブルの宣言はこのようになります
CREATE TABLE cities ( city varchar(80) primary key, location point ); CREATE TABLE weather ( city varchar(80) references cities, temp_lo int, temp_hi int, prcp real, date date );
では無効なレコードを挿入してみましょう。
INSERT INTO weather VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
ERROR: <unnamed> referential integrity violation - key referenced from weather not found in cities
外部キーによる振舞がアプリケーションに見事に調和されました。このチュートリアルではこの簡単な例題より先には進みませんが、さらに情報が欲しい方は 第5章 をご覧ください。外部キーを正しく使用するようにすると間違いなくデータベースアプリケーションの質を向上させますので身につくように励んでください。