データの整合性の基礎
テーブルのドメインを指定する最初の手順は、列のデータ型を決めることです。ドメインは、列に格納できるすべての値のセットです。ドメインには、データ型を設定する概念だけでなく、列に許容される値も含まれます。たとえば、Production.Product テーブルの Color 列のドメインでは、データ型 nvarchar と 15 文字のサイズ制限が定義されています。また、ドメインに、列への格納を許可する文字列値 (たとえば、赤、青、緑、黄色、茶色、黒、白、青緑、灰色、銀) を指定することもできます。詳細については、「データ型 (データベース エンジン)」を参照してください。
NULL 値
列では NULL 値が許容される場合も、拒否される場合もあります。NULL はデータベース内の特殊な値であり、不明な値という概念を表しています。NULL は、空白文字や 0 とは異なります。空白は実際に有効な文字であり、0 は有効な数値です。NULL は、その値が不明であるという概念を表しているにすぎません。NULL は長さが 0 の文字列とも異なります。列定義に NOT NULL 句が含まれている場合は、その列の値が NULL の行を挿入することはできません。列定義に NULL キーワードのみがあれば、その列は NULL 値を許容します。
列で NULL 値を許容すると、その列を使用した論理比較が複雑になる可能性があります。SQL-92 規格では、NULL 値との比較は TRUE にも FALSE にも評価されず、UNKNOWN に評価されます。これにより、比較演算子に 3 値の論理が導入され、正しく管理することが困難になる可能性があります。
制約、ルール、デフォルト、およびトリガ
テーブルの列には、データ型とサイズ以外にもプロパティがあります。それらのプロパティは、データベース内のデータの整合性とテーブルの参照整合性を確保するための重要な部分です。
- データの整合性とは、列がどのように参照されても正しいデータ値が入っていることを指します。データ値は、正しいデータ型で正しいドメインに含まれている必要があります。
- 参照整合性とは、テーブル間のリレーションシップが正しく保持されていることを示します。あるテーブル内のデータは、別のテーブル内の既存の行だけを指している必要があります。存在しない行を指すことはできません。
両方の種類の整合性を保持するために、次のオブジェクトが使用されます。