【データベース設計の基礎】データ品質を守る「制約」の基本!列制約と表制約の種類・違いをわかりやすく解説
データベースを設計する上で欠かせないのが「制約(Constraint)」である。
制約とは、データベースに不適切なデータが勝手に入り込まないようにするための「番人」のような役割を持つルールだ。
今回は、データベースの基本概念である「列制約」と「表制約」の分類や、それぞれの種類について整理して見ていこう。
1. 対象による分類(列制約と表制約)
データベースの制約は、その適用範囲(対象)によって大きく2つに分類される。
| 分類 | 概要・特徴 |
|---|---|
| (1)列制約 | 1つの列(カラム)に対して定義する制約。 (例:ある特定の列にNULLを許可しないなど) |
| (2)表制約 | 複数の列の組み合わせ、または表全体に対して定義する制約。 (例:複数列の組み合わせで一意性を担保するなど) |
2. 制約の具体的な種類
それぞれの分類に含まれる具体的な制約の種類を確認していこう。
(1)主な列制約
- ① NOT NULL制約
対象の列において、値が空(NULL)であることを禁止する制約。必ず何らかのデータが入力されている状態を強制する。 - ② 一意制約(ユニーク制約)
列の中で、すでに登録されている値と重複するデータ(同一の値)の入力を禁止する制約。
※なお、「複数の列の組」で一意性を定義する場合は、列制約ではなく後述の表制約として定義することになる。 - ③ CHECK制約
データの値に対して、特定の条件(「1〜100までの値のみ許可」「特定コードのみ許可」など)を定義し、条件を満たさないデータの登録を防ぐ制約。
(2)主な表制約
- ① 参照整合性制約(外部キー制約)
2つの表(テーブル)の間でデータの整合性を保つための制約。
例えば「親子関係」のテーブル構造において、子テーブルにデータを登録する際、親テーブルに必ず対応する親データが存在することを強制する(「子だけに存在して親がいない」状態を防ぐ)。
3. まとめ
| 制約の分類 | 代表的な種類 | 主な目的 |
|---|---|---|
| 列制約 | NOT NULL、一意制約、CHECK制約 | 1つの列単位でデータの品質や入力漏れを防ぐ |
| 表制約 | 複合一意制約、参照整合性制約(外部キー)など | 複数列の組み合わせや、テーブル間のデータの整合性を守る |
データベースの設計や基本情報技術者試験などの資格試験でも、この「列制約と表制約の違い」「各制約の役割」は定番の重要ポイントである。しっかりと整理して押さえておこう!
PR