【せいやく】
制約(データベース) とは?
最終更新:
💡 データを入れるときに守る、表のルール
データベースで、表や列に設定した条件を守らせる仕組み。NULLの禁止、値の重複、参照先との関係などを検査し、条件に違反する操作を拒否する。
📌 このページのポイント
- NOT NULLはNULLを禁止する。空文字とは区別する
- UNIQUE・PRIMARY KEYで、重複や行の識別を管理する
- FOREIGN KEYは参照関係、CHECKは指定した条件を検査する
- 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」 = 制約・制限
💬 表や列の値について、守るべき条件を指定するという意味で使うよ。