テーマ、知りたいこと
最近読んだ『達人に学ぶDB設計 徹底指南書』では、サロゲートキー(代理キー)は極力使わず、自然キーを使うべきだと述べられていました。
しかし実際の開発では、サロゲートキーを使った方がSQLも書きやすく、設計としてもわかりやすいように感じており、この主張が今の現場でもそのまま通用するのか疑問に思っています。
自分の意見
本の主張も理解はできるのですが、自然キーには
・業務ルールの変更でキーの値が変わりうる(コード体系の変更など)
・複合キーになるとJOINやWHEREが煩雑になる
といった不安があり、単純なIDカラム(連番やUUID)で統一した方が、実装もシンプルで事故も少ないのでは?と感じています。
一方で、ORMやフレームワークがサロゲートキー前提になっている影響で、自分がそう感じているだけかもしれないとも思っています。
聞きたいこと
実務では、サロゲートキーと自然キー、どちらを基本方針にしていますか?
「ここは自然キーにすべき」「ここはサロゲートで良い」という使い分けの基準はありますか?
本の主張(自然キー推奨)は、書かれた当時と今とで前提が変わっている部分もあるのでしょうか?
実務での経験を交えて教えていただけると嬉しいです。よろしくお願いします!