【せいやく】

制約(データベース) とは?

最終更新:
💡 データを入れるときに守る、表のルール

データベースで、表や列に設定した条件を守らせる仕組み。NULLの禁止、値の重複、参照先との関係などを検査し、条件に違反する操作を拒否する。

📌 このページのポイント
DB制約:表に守らせるルール社員データを登録する例PRIMARY KEY社員IDを一意・NULLなしにNOT NULL名前にNULLを入れないUNIQUEメールの重複を防ぐFOREIGN KEY部署IDの参照関係を守るCHECK年齢の範囲などを検査するNULLと空文字は別。条件に合うルールを選ぶ
代表的な制約を社員表で使う例。NULLなどの扱いはDB製品で確認します。
ひよこ ひよこ
制約には、何があるの?
ペンギン先生 ペンギン先生
NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECKなどだよ。例えばPostgreSQLでは、価格を正の値にするCHECKと、NULLを防ぐNOT NULLを組み合わせられる。条件に合わない操作にはエラーを返すんだ。
ひよこ ひよこ
NULLは、空の文字と同じ?
ペンギン先生 ペンギン先生
違うよ。NULLは値がないことを表すもので、空文字は長さゼロの文字列。PostgreSQLのNOT NULLだけでは空文字は防げない。CHECKも、式の結果がNULLなら通るので、必要な値にはNOT NULLも使うんだ。
ひよこ ひよこ
重複と参照先は、どう守る?
ペンギン先生 ペンギン先生
UNIQUEは指定した列や列の組み合わせの重複を防ぐよ。PostgreSQLでは既定でNULL同士を同じ値として扱わない。PRIMARY KEYは一意でNULLではない行の識別子。FOREIGN KEYは指定した参照先のキーとの関係を守り、削除時の動作も設定で決まる。
ひよこ ひよこ
後から、追加してもいい?
ペンギン先生 ペンギン先生
ALTER TABLEで変更できるけれど、既存データや検証の方法を確認しよう。検査に伴う負荷も条件による。アプリの入力確認とDBの制約は役割を分けて使えるよ。性能のために一律に外すより、必要な整合性と処理を確認して設計するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「制約」って出てきたら「データベースで、入れるデータに守らせるルール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Constraint」 = 制約・制限
💬 表や列の値について、守るべき条件を指定するという意味で使うよ。

参考資料

← 用語集にもどる