業務で既存システムの分析をしていてID採番ルールでもやもやすることがあるため、ChatGPTにベストプラクティスを作ってもらいました(ちょっと検索しても使い勝手の良さそうなものが見つからなかったため)。なかなかそれっぽい内容でいいなと思ったため、少し補正した上でブログに書き残します。
ルール | 詳細 |
---|---|
一意性を保つ | 各IDは一意であるべきです。これにより、データの混乱や重複を防ぐことができます。 |
一貫性を保つ | IDのパターンや形式は一貫していることが望ましいです。これは、どのような形式のIDが何を意味するのかを理解するのを容易にし、今後のIDの生成を容易にします。 |
不変性を保つ | IDは一度生成されたら変更されるべきではありません。これにより、IDが指すデータが変更されても、ID自体は変わらないことでデータの整合性が保たれます。 |
インクリメンタル | IDは通常、前のIDから一定の値を増加させて生成されるべきです。これにより、新しいレコードが追加されたときにどのIDを割り当てるべきか、または特定のIDが何を指すのかを予測することが容易になります。 |
固定長を保つ | IDの長さは固定的であるべきです。これにより、システムがIDを扱いやすくなります。 |
先頭の0を避ける | IDに先頭に0を使うと、一部のシステムではこの部分が削除されてしまい、予期せぬ問題を引き起こす可能性があります。 |
意味を持たせない | IDに意味を持たせると、IDにできる限り情報を含ませるための場合がありますが、これは悪用の可能性があるため避けるべきです。また、 IDが具体的な情報を含むような場合、その条件が変わったときにIDを変更せざるを得なくなる可能性もあります。 |
これらの原則はID採番における基本的なベストプラクティスですが、特定のシステムや要件によっては、これらを適応する必要があります。また、どんな形式がベストか決定する際には、扱うデータの性質、使用するシステムの能力、将来の拡張性の必要性、セキュリティを考慮することが重要です。
とのこと。なお、SalesforceのオブジェクトIDはこれらのルールをパスできていて流石だな、と思うのでした。