IDを作成して保存するためのベストプラクティスは何であるか疑問に思いました。数年前、教授は、社会保障番号を例として使用して、不十分に構築されたIDシステムの危険性について私に話しました。特に、SSNにはエラー検出機能がないため、9桁の文字列と有効なSSNの違いを区別することはできません。そして今、政府機関は、データを追跡し、その検証を確実にするために、姓+SSNや誕生日+SSNなどを必要としています。さらに、あなたの社会保障番号は、あなたが生まれた場所に基づいてある程度予測可能です。
今、私はユーザーデータベースを構築しています...そしてこのアドバイスに基づいて、「useridmediumintauto_increment」は受け入れられないでしょう。特に、このIDをユーザーのプライマリIDとして使用する予定の場合。(たとえば、ユーザーにユーザー名の変更を許可した場合、ユーザー名は数値のユーザーIDよりも追跡が難しくなります...カスケード外部キーなどが必要になります。)電子メールの変更、ユーザー名の変更、パスワードの変更。 。ただし、ユーザーIDは永久に一定である必要があります。
明らかに、auto_incrementはsurrogate_keys用にのみ設計されています。つまり、プライマリ識別メカニズムがすでにある場合にのみ便利なショートカットですが、データの「固有の識別子」として使用しないでください。ランダムなUUIDを作成することは面白そうに見えますが、ランダム性は私をオフにします。
そして、私は尋ねます:「主キー」識別番号を作成するためのベストプラクティスは何ですか?