サブタイプ実装における参照整合性
はじめに
サブタイプ構造における参照整合性により、は、親テーブルと子テーブルの間の有効な関係です。排他的サブタイプでは、特定の親に対して 1 つのサブタイプのみが許可されますが、非排他的サブタイプでは複数のサブタイプが許可されます。
排他的サブタイプ
排他的サブタイプの参照整合性を実装するには:
-
識別子列: 親テーブルに識別子の列を追加してサブタイプを示します。
- 識別子の値が許容範囲内にあることを確認するために CHECK CONSTRAINT を実装します。
-
外部キー関係の主キー:親テーブルの主キーがサブタイプ テーブルの外部キーになり、親行ごとに 1 つのサブタイプが確保されます。
-
ユーザー定義関数 (UDF):主キーと識別子が親テーブルに存在します。
-
サブタイプのチェック制約テーブル: サブタイプ テーブルに CHECK CONSTRAINT を実装して、UDF を呼び出し、親の存在を検証します。
-
トランザクション チェック: トランザクション ロジックを使用して、少なくとも 1 つのサブタイプが存在することを確認します。各親。
非独占的サブタイプ
非排他的サブタイプの場合:
-
主キーと外部キーの関係: 排他的サブタイプの場合と同様に、主キーと外部キーの関係を確立します。 .
-
存在チェック: 存在を実行します。親の主キーを使用してサブタイプ テーブルをチェックし、サブタイプが存在するかどうかを判断します。
UDF ベースのアプローチの利点
- を回避しますデータの重複とインデックスの過剰な使用。
- サブタイプが存在しないシナリオを処理します。親挿入の時間。
コメントへの応答
-
Discriminator の更新保護: オープン アーキテクチャ標準 (ACID トランザクション) ) 不正なアップデートを防止します。さらに、データベースへの制御されたアクセスとトランザクションの使用により、更新によってデータの整合性が確実に維持されます。
-
UDF と Duplicate Discriminator FK: UDF は、追加のコンポーネントを必要とせず、より効率的で柔軟なソリューションを提供します。テーブルとインデックス。
以上が排他的および非排他的サブタイプ データベース実装で参照整合性を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。