制約付きサブタイプ参照整合性
排他的サブタイプ
- 基本型に「Discriminator」列を実装するどのサブタイプ行が存在するかを示す
- SQL CHECK CONSTRAINT を使用して、有効な識別子の範囲を確認します (例: センサーの場合: IN ("B", "C", "D"))。
- 基本型のPK は一意性を保証し、Discriminator はサブタイプ行の重複を防ぎます。
- A CHECK CONSTRAINT inサブタイプはユーザー定義関数 (UDF) を呼び出して、基本タイプの PK 識別子の存在を確認します。
- これにより、各 PK に有効なサブタイプのみが存在することが保証されます。
- ルールを強制します。すべての基本タイプには少なくとも 1 つのサブタイプが必要です」 code.
非排他的サブタイプ
- 識別子は必要ありません。
- サブタイプの存在は、存在によって検証されます。サブタイプ テーブルを確認します。
- 通常の PRIMARY KEY、 FOREIGN KEY、および Range CHECK CONSTRAINT は、非排他的サブタイプを適切にサポートします。
排他的サブタイプでの無効な識別子更新の防止 (コメントへの応答で対処)
- オープン アーキテクチャ標準を使用するACID SQL トランザクションを使用します。
- 直接を禁止しますデータベースに対する SQL 更新。
- 単一トランザクションで基本タイプのサブタイプの挿入を強制します。
- 識別子を更新する前に、前のサブタイプを明示的に削除します。
- EXEC 権限のみを付与します。これらのトランザクションを実行するためのユーザー ロールに割り当てられます。
これにより、識別子列は無効な更新から保護され、データベースの整合性が維持されます。
以上がSQL で排他的および非排他的サブタイプの参照整合性を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。