整合性制約とは(全体像)
整合性制約は、データベースの中のデータが正しくあり続けるためのルール。これを4つの種類に分けて整理したものだよー。
身近にたとえると、申込フォームの入力チェック。「値の範囲」「必須項目」「指定先が実在するか」「業務上の決まり」——こうしたチェックでおかしなデータをはじくのと同じなのー。
押さえるのは、4種の役割と、チェックはデータベース(DBMS)が自動でやってくれること。人が毎回手で確かめるわけではないよー。
詳しく:4種の役割と参照整合性だけ覚えれば戦える
ここが記事の心臓部。まず4種を見ていこーね。
整合性制約の4種
| 種類 | 役割 |
|---|---|
| ドメイン制約 | 値の範囲を守る(例:価格は0より大きい) |
| エンティティ整合性 | 主キーは空欄ダメ・一意(行を必ず見分けられる) |
| 参照整合性 | 外部キーの参照先が、ちゃんと存在する |
| ユーザ定義制約 | 業務上の決まり(その会社独自のルール) |
とくによく出るのが参照整合性。外部キーが指している先(参照先)が、実際に存在することを保証するルールだよー。たとえば「存在しない部署IDを社員に設定する」のを防ぐのー。
ここで一番のひっかけが「整合性のチェックは人が手で行う」という誤解。チェックはデータベース(DBMS)が自動で行い、違反するとエラーになる。アプリ任せ・手作業ではないよー。
もう1つのひっかけが「参照整合性は別々の表の間だけ」という思い込み。同じ表の中で自分自身を参照する(自己参照)場合にも当てはまる(社員表の中の「上司」など)。
わかりやすく言い換えると
要するに、入力チェックでイメージするとラクだよー。
①ドメイン制約 … 値の範囲チェック(年齢は0以上、など)
②エンティティ整合性 … 主キーは空欄ダメ・重複ダメ(行を必ず見分けられる)
③参照整合性 … 指定した相手(参照先)がちゃんと実在するか
つまり、「4種(ドメイン・エンティティ・参照・ユーザ定義)」「チェックはDBMSが自動」、この2点が試験の急所なのー。
試験のツボ
🔴 一番出る:整合性制約の4種
①ドメイン制約(値の範囲)・エンティティ整合性(主キーは空欄ダメ・一意)
②参照整合性(外部キーの参照先が存在)・ユーザ定義制約(業務ルール)
🔴 次に出る:参照整合性
①外部キーが指す先(参照先)が実際に存在することを保証する
②同じ表の中の自己参照(上司など)にも当てはまる
🟡 押さえると安定:DBMSが自動でチェック
①整合性のチェックはDBMSが自動で行い、違反するとエラーになる
②人が毎回手で確かめるのではない
よくある間違い
①「整合性のチェックは人が毎回手で行う」→ ✗ チェックはDBMSが自動で行い、違反するとエラーになる。手作業ではない。
②「参照整合性は別々の表の間だけに当てはまる」→ ✗ 同じ表の中の自己参照(上司など)にも当てはまる。
③「整合性制約は1種類しかない」→ ✗ ドメイン・エンティティ・参照・ユーザ定義の4種がある。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(整合性制約の4種)
整合性制約に関する次の記述のうち、正しいものはどれか。
- 整合性制約はドメイン・エンティティ・参照・ユーザ定義の4種があり、データの正しさを保つ
- 整合性制約は1種類しかなく、種類による役割の違いはまったくないものだとされているものである
- 整合性制約は画面の表示を整えるための飾りのことだとされているものである
- 整合性制約はデータを必ず削除するための命令のことだとされているものである
解答は 1 だよー。
整合性制約は、ドメイン・エンティティ・参照・ユーザ定義の4種があって、データの正しさを保つためのルールなのー。入力チェックを4つに分けたイメージだよー。
選択肢2の「1種類しかない」、選択肢3の「表示の飾り」、選択肢4の「削除する命令」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 4種でデータの正しさを保つ |
| 2 | ✗ | 4種ある |
| 3 | ✗ | 表示の飾りではない |
| 4 | ✗ | 削除する命令ではない |
オリジナル問題2(参照整合性)
参照整合性に関する次の記述のうち、正しいものはどれか。
- 参照整合性は画面の色をそろえるための決まりのことだとされているものである
- 参照整合性は外部キーの参照先が存在しなくてもまったく問題ないことを表すものだとされている
- 参照整合性はデータを必ず暗号化するための決まりのことだとされているものである
- 参照整合性は外部キーが指す参照先が実際に存在することを保証し、自己参照にも当てはまる
解答は 4 だよー。
参照整合性は、外部キーが指す参照先が実際に存在することを保証するルールで、同じ表の中の自己参照(上司など)にも当てはまるのー。存在しない部署IDを防ぐ感じだよー。
選択肢1の「色をそろえる」、選択肢2の「存在しなくてよい」、選択肢3の「暗号化する」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 色をそろえる決まりではない |
| 2 | ✗ | 参照先は存在する必要がある |
| 3 | ✗ | 暗号化の決まりではない |
| 4 | ✓ | 参照先の存在を保証・自己参照も |
オリジナル問題3(DBMSが自動チェック)
整合性制約のチェックに関する次の記述のうち、正しいものはどれか。
- 整合性のチェックは人が毎回手で行うもので、自動では行われないものだとされている
- 整合性のチェックはDBMSが自動で行い、違反したときはエラーになるものである
- 整合性のチェックは画面の明るさを見て判断するものだとされているものである
- 整合性のチェックはデータを必ず3つに分けてから行うものだとされているものである
解答は 2 だよー。
整合性のチェックは、DBMS(データベース)が自動で行い、違反するとエラーになるのー。人が毎回手で確かめるのではないよー。
選択肢1の「人が手で行う」、選択肢3の「明るさを見て判断」、選択肢4の「3つに分けてから」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 自動で行われる |
| 2 | ✓ | DBMSが自動・違反でエラー |
| 3 | ✗ | 明るさで判断しない |
| 4 | ✗ | 3つに分ける話ではない |
まとめ
押さえどころ
- 🔴 整合性制約の4種 = ドメイン(値の範囲)・エンティティ(主キー空欄ダメ・一意)・参照(参照先が存在)・ユーザ定義(業務ルール)。
- 🔴 参照整合性 = 外部キーの参照先が実際に存在することを保証。自己参照にも当てはまる。
- 🟡 DBMSが自動でチェック = 違反するとエラー。人が毎回手で確かめるのではない。
次に学ぶ
執筆: SikakuQuest編集部