IT資格用語解説基本情報技術者試験・データベース言語
検査制約
更新日:
用語解説
検査制約(CHECK制約)は、行の挿入又は更新時に、列値が指定した論理条件を満たすことをDBMSに検査させる整合性制約です。範囲、列間の大小関係、許可コードなどの業務規則を表へ持たせます。
■ 試験で押さえるポイント
CHECK (価格>=0)、CHECK (終了日>=開始日)、CHECK (状態 IN ('受付','完了'))のように、一列又は同じ行の複数列を使う条件を定義できます。
SQLのCHECKは条件がFALSEになる行を拒否し、TRUE又はUNKNOWNは通すのが基本です。NULLも禁止したい列にはCHECKだけでなくNOT NULLを指定します。
他の行との重複防止はUNIQUE、別表に値が存在する保証はFOREIGN KEYを使います。CHECKの副問合せで表間・行間規則を表せないDBMSが多く、適切な制約を選びます。
アプリケーションの入力検査と違い、DB制約は複数の画面、バッチ、直接SQLなど全ての更新経路へ共通に適用され、データの最終防衛線になります。
■ 選択肢での判断ポイント
行内の範囲・条件ならCHECK、値必須ならNOT NULL、一意性ならUNIQUE、他表との対応ならFOREIGN KEYです。CHECKだけでNULLも必ず拒否するという選択肢に注意します。
例: CHECK (数量 BETWEEN 1 AND 99)だけでは数量NULLの評価がUNKNOWNとなり通る場合があります。必須かつ1~99にするには数量 INTEGER NOT NULL CHECK (数量 BETWEEN 1 AND 99)とします。