 |
PSQL Programmer's Guide (v11) |
 |
|
テーブル間の関係の定義 (リレーショナル インターフェイス)
Pervasive PSQL と共に参照整合性(RI)を使用して、データベース内でそれぞれのテーブルがどのように関係しているかを定義することができます。RI は、あるテーブルの列(または列のグループ)が別のテーブルの列(または列のグループ)を参照しているとき、これらの列に対する変更は同期することを保証します。RI はテーブル間の関係を定義する一連の規則を提供します。これらの規則は参照制約として知られています(参照制約は簡略的に関係とも呼ばれます)。
データベース内のテーブルに参照制約を定義すると、トランザクショナル データベース エンジンは、これらのテーブルにアクセスするすべてのアプリケーションにわたって制約を強制します。これにより、アプリケーションはテーブルを変更するごとに個別にテーブルの参照をチェックすることから解放されます。
RI を使用するにはデータベースに名前を付ける必要があります。いったん参照制約を定義すると、影響を受けるファイルはそれぞれデータベース名を含みます。誰かがファイルを更新しようとすると、トランザクショナル データベース エンジンはデータベース名を使用して適用できる RI 定義を含むデータ辞書を探し、その RI 制約に対して更新をチェックします。これにより Pervasive PSQL アプリケーションが RI を危うくすることを防止します。トランザクショナル データベース エンジンが参照整合性制約に合致しない更新を阻止するからです。
データベース内のテーブルに参照整合性を定義するには、CREATE TABLE および ALTER TABLE ステートメントを使用します。これらのステートメントの構文説明については、『SQL Engine Reference』の以下のトピックを参照してください。
参照整合性の定義
次の定義は、参照整合性を理解するのに役立ちます。
- 親テーブルは、外部キーによって参照される主キーを含むテーブルです。
- 親行は、主キーが外部キー値と一致する、親テーブル内にある行です。
- あるテーブルの行の削除により 別のテーブルの行の削除が起こる場合、連鎖削除テーブルが発生します。テーブルが連鎖削除かどうかは次の条件により決定されます。
- 自己参照テーブルはそれ自体に対し連鎖削除になります。
- 従属テーブルは、削除規則に関係なく、常にその親に対して連鎖削除です。
- あるテーブルの親テーブルとさらにその親テーブルの削除規則が CASCADE の場合、このテーブルと、親の親テーブルは連鎖削除になります。
- 従属テーブルは、1 つまたは複数の外部キーを持つテーブルです。これらの外部キーは、それぞれ同一または異なるテーブルの主キーを参照することができます。従属テーブルは複数の外部キーを持つことができます。
- 従属テーブルの外部キー値は、それぞれ関連する親テーブルに一致する主キー値がある必要があります。言い換えると、外部キーが特定の値を持つ場合、外部キーの親テーブル内のいずれかの行の主キー値がその値を持つ必要があります。
- 従属テーブルに行を挿入する試みは、次の場合に失敗します。それぞれの参照制約の親テーブルが、挿入しようとする従属テーブルの外部キー値と一致する主キー値を持たない場合です。外部キーが現在参照している親テーブルの行を削除しようとすると、参照制約をどのように定義したかによって、失敗するか、または従属行まで削除することになります。
- 従属行は、従属テーブル内の行で、その外部キー値は、関連付けられている親行の一致する主キー値に依存します。
- 孤立行は、親テーブルの主キーに対応するインデックスに存在しない外部キー値を持つ、従属テーブルの行です。従属キー値は対応する親キー値を持ちません。
- 参照は、主キーを参照する外部キーです。
- 参照パスは、従属テーブルと親テーブルの間の参照で構成される特定のセットです。
- 子孫は、参照パス上にある従属テーブルです。これは、パスの元の親テーブルから削除された 1 つまたは複数の参照です。
- 自己参照テーブルは、それ自体の親テーブルであり、その主キーを参照する外部キーを含むテーブルです。
- サイクルは、あるテーブルの親テーブルが同時にそのテーブルの子テーブルにもなっている参照パスです。
 データ管理の概要 (リレーショナル インターフェイス) |
 キー (リレーショナル インターフェイス) |
|