参照整合性

SQL リレーショナルデータベース入門

Timo Grossenbacher

Data Journalist

参照整合性

  • 別のテーブルのレコードを参照する場合、そのレコードが存在していなければならない
  • 2 つのテーブルの間に指定される
  • 外部キーによって適用される
SQL リレーショナルデータベース入門

参照整合性違反

テーブルAからテーブルBへの参照整合性違反

  • ...テーブルAのレコードから参照されているテーブルBのレコードが削除された場合
  • ...テーブルBに存在しないレコードを参照するレコードがテーブルAに挿入された場合
  • 外部キーは違反を防ぐ!
SQL リレーショナルデータベース入門

違反への対処

CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE NO ACTION
);
CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE CASCADE
);
SQL リレーショナルデータベース入門

違反への対応(続き)

ON DELETE...

  • ...NO アクション: エラーを発生させる
  • ...CASCADE: すべての参照レコードを削除する
  • ...RESTRICT: エラーを発生させる
  • ...SET NULL: 参照列をNULLに設定する
  • ...SET DEFAULT: 参照列を既定値に設定する
SQL リレーショナルデータベース入門

例を見てみましょう!

SQL リレーショナルデータベース入門

Preparing Video For Download...