意外と現場によって分かれてるのが、テーブルのユニーク制約や外部キー制約を、積極的につけてるところと付けてないところがあることです。
結論としては、
・外部キー制約 はなくてもOK
・ユニーク制約 は積極的につけるべき
と考えています。
外部キー制約
外部キー制約は積極的には貼らないか、全く貼ってない現場が多い気がします。
貼るデメリットとして、データ構造がガチガチになって、データ作るのが難しくなります。
特定テーブルのレコード作るのに、あのテーブルも、あのテーブルも作らないといけなくなり、うんざりしてきます。
貼ることでレコードとしての品質は担保されるのですが、保守していく上では上のように大変になるので、貼らないという判断がされるのでしょう。
ユニーク制約
ユニーク制約を貼ったカラムには、同一値が存在できなくなりますね。
ユニーク制約が貼られてると、同一値が存在できないことをシステム的に保証できるので、いざという時の助けになりまます。
設計書を作成してない現場では、なんとなく「このカラムって同一値ないんですよね?」という、なんとなくの議論になってしまいます。
コードの中で同一値の存在チェックがあっても、設計書がないので、他のコード箇所で同一値が入るようになってる可能性が拭えません。
そんな時に、ちゃんとユニーク制約が貼られていると、システム的に保証できるので安心できる。
コード確認しなくても一意性が一目瞭然で担保されてる。
外部キー制約は貼らなくても、ユニーク制約は貼っておくと、予期せぬバグの発生を防ぐことができることがあるので、ユニーク制約は貼った方がいいと思った次第です。