データの整合性

データの整合性を強制すると、データベース内のデータの品質を確実にできます。たとえば、ある従業員の従業員 ID の値を 123 と入力した場合、そのデータベース内では、他の従業員に同じ ID を使用することを禁止する必要があります。employee_rating 列で 15 の範囲の値を対象にする場合、データベース内では、範囲外の値を許容しないようにします。従業員の部署番号を格納する dept_id 列がテーブルにある場合、データベース内では、社内の部署番号として有効な値のみを許可するようにします。

テーブルのプランを作成する際には、列に対する有効値を識別する手順、およびその列のデータの整合性をどのように強制するかを決定する手順の 2 つが重要です。データの整合性は次の種類に分類されます。

  • エンティティの整合性

  • ドメインの整合性

  • 参照整合性

  • ユーザー定義の整合性

エンティティの整合性

エンティティの整合性は、行を特定のテーブルの一意なエンティティとして定義します。UNIQUE インデックス、UNIQUE 制約、または PRIMARY KEY 制約を使用して、テーブルの識別子列または主キーの整合性を強制します。

ドメインの整合性

ドメインの整合性とは、特定の列に対するエントリの妥当性です。データ型を使用して型を制限したり、CHECK 制約とルールを使用して形式を制限したり、FOREIGN KEY 制約、CHECK 制約、DEFAULT 定義、NOT NULL 定義、およびルールを使用して有効値の範囲を制限することにより、ドメインの整合性を強制できます。

参照整合性

参照整合性は、行の入力時または削除時に、テーブル間で定義されている関係を維持します。SQL Server での参照整合性は、FOREIGN KEY 制約および CHECK 制約を使用した、外部キーと主キーの関係または外部キーと一意キーの関係に基づいています。参照整合性を強制することで、テーブル間でキー値の一貫性を確保できます。このような一貫性を確保するには、存在しない値への参照がないことのほか、キー値の変更時にその値への参照がすべてデータベース全体で一貫して変更されることが必要です。

参照整合性を強制すると、ユーザーによる次の操作が SQL Server によって禁止されます。

  • 関連付けられた行が主テーブル内にない場合に、関連テーブルに対して行の追加や削除を行うこと。

  • 関連テーブルの行が孤立状態になるような変更を、主テーブルの値に対して行うこと。

  • 一致する関連行がある場合に、主テーブルから行を削除すること。

たとえば、AdventureWorks2008R2 データベース内の Sales.SalesOrderDetail テーブルおよび Production.Product テーブルを使用する場合、参照整合性は、Sales.SalesOrderDetail テーブルの外部キー (ProductID) と Production.Product テーブルの主キー (ProductID) との間の関係に基づいています。この関係により、販売注文では Production.Product テーブルに存在しない製品を参照できなくなります。

外部/プライマリ キーを使用した参照整合性

ユーザー定義の整合性

ユーザー定義の整合性を使用すると、整合性の他のカテゴリに当てはまらない特定のビジネス ルールを定義できます。整合性のどのカテゴリも、ユーザー定義の整合性をサポートします。これには、CREATE TABLE、ストアド プロシージャ、およびトリガーで使用される列レベルおよびテーブル レベルのすべての制約が含まれます。

関連項目

概念

その他の技術情報