「参照先のテーブルにデータが存在しないようなデータの入力をできないようにする」という制御です。存在しない部署IDを持った従業員を登録することができなくなります。普通に考えればとても良さそうな話に見えます。従業員テーブルなら役職テーブルも参照しているだろうし、ちょっとしたアプリケーションなら勤務体系テーブルなんてのも参照してるかもしれない。したら、現住所を都道府県テーブル、市区町村テーブルなどそれぞれのテーブルを参照する形式で持っている可能性もあります。制御の数が増えれば増えるだけ従業員データを登録する際にチェックすることが増え、その分パフォーマンスも悪くなってきます。実際にはもっと差が開きます。基本的には最大のデメリットは手間(開発側)と速度(ユーザー側)かな?と思います。「念のため制約かけておく」くらいのものかと思っています。最近になって、「もしかしたら制約かけた方がいいかもしれない」と思い始めました。単純に人的ミスで不整合が起きえます。データリカバリ自体は別に最近急に増えたわけでもないのですが、テーブル構造が複雑になってくるとミスの発生確率も上がりますし、もっと言うと、リカバリ作業に慣れてきた頃が一番危ない気もするので、そういった、アプリケーションを通さないデータの書き換えの場合の制御として、DBそのものに制約をかけておくことは必要なのかもしれません。制約かけていても実行時間に不満が生じるほどの差はありません。あればあとは開発側の「えーめんどくさい」というデメリットだけなので、そんなもんならやった方が良い気がします。港区界隈でSEやってた暇人。今はITコンサルとかいう胡散臭い職種になっています。好きな和音はsus4です。(1)月別アーカイブ参加グループプログラミンググループテストしたい人のグループポケモンリンクはてなブログQiitaGitHubはてなブログをはじめよう!sakuramochi702さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。