参照整合性 (さんしょうせいごうせい、: referential integrity) は、コンピュータ関係データベース関係モデルにおいて2つの関連しあった関係変数 (表、テーブル) の間の一貫性 (データ完全性) をいう。 参照整合性は、多くの場合、主キーもしくは主キー以外の候補キーと、外部キーの、組み合わせにより、強制適用される。 参照整合性が強制適用されると、外部キーが宣言された関係変数の外部キーを構成する属性 (列、カラム) の値は、その関係変数の親となる関係変数の主キーの値もしくは主キー以外の候補キーの値として存在しなければならない。 例えば、別の関係変数の外部キーにより参照されている組 (タプル、行) を削除することは、参照整合性を破壊してしまうことになるため、関係データベース管理システム (RDBMS) は参照整合性を保つべく通常は削除の実行を阻止する。 例外として、参照している外部キーを含む組を連鎖して削除することを伴って、削除を実行できる場合があり、この場合は参照整合性が保たれる。 外部キーにより参照されている組を削除することができるかどうかは、データ定義言語 (DDL) による参照整合性制約の定義により定義される。

参照整合性が強制適用されていない関係データベースの例。この例では、アルバム関係変数 (アルバムテーブル) の外部キー (artist_id) の値に存在しないアーティストを参照しているものがある。換言すれば、外部キーの値に、対応する被参照関係変数の主キーが存在しないものがある。ここで何が起こっているかというと、"Aerosmith" と呼ばれるアーティストが artist_id が "4" で存在していたが、このアーティストがアーティスト関係変数から削除されてしまったのである。しかし、アルバム "Eat the Rich" はこのアーティストを参照している。参照整合性が強制適用されれば、このようなことは起こり得ず未然に防がれる。

社員データベースは社員が属する部署の情報を保持している。 社員関係変数 (社員テーブル) の「部署番号」属性外部キーとして宣言されており、部署関係変数の主キーとして宣言されている「部署番号」属性を参照している。 ある部署で現に勤務している社員が存在する場合、その部署の情報を部署関係変数から削除することは、参照整合性を破壊することになるため、関係データベース管理システム (RDBMS) により削除の実行は阻止されるであろう (参照整合性制約が連鎖削除を許可していない場合) 。

関連項目

編集