郵便番号や社会保障番号を使わないでください
データベースは、レコードを格納、ソート、比較または作成するためのキーに依存します。 しばらくデータベースを回ってきたのであれば、主キー、 候補キー 、 外部キーなど、さまざまな種類のキーについて聞いたことがあります 。 新しいデータベーステーブルを作成すると、そのテーブルに格納されている各レコードを一意に識別する1つの主キーを選択するよう求められます。
主キーが重要な理由
主キーの選択は、新しいデータベースの設計において最も重要な意思決定の1つです。 最も重要な制約は、選択したキーが一意であることを確認する必要があることです。 過去、現在、または未来の2つのレコードが属性に対して同じ値を共有する可能性がある場合は、主キーの選択肢としては不適切です。
主キーのもう1つの重要な側面は、リレーショナルデータベース内で他のテーブルにリンクすることです。 この側面では、主キーはポインタのターゲットのように動作します。 これらの相互依存性のために、レコードが作成されるときに主キーが存在しなければならず、変更することはできません。
主キーの選択肢が貧弱
何人かの人が主キーの明白な選択を考慮するかもしれないものは、代わりに貧しい選択かもしれません。 いくつかの例があります:
- 郵便番号は、町のテーブルのための良い主キーを作成しません。 シンプルな都市のルックアップテーブルを作成している場合、郵便番号は論理的な主キーのようです。 しかし、さらに調査すると、複数の町が郵便番号を共有していることに気付くかもしれません。 たとえば、ニュージャージー州のネプチューン、ネプチューンシティー、ティントンフォールズ、ウォールタウンシップはすべて07753郵便番号を共有しています。
- 社会保障番号は、多くの理由で良好な主キーを作成しません。 ほとんどの人はSSNを非公開であるとみなし、データベースユーザーには見えないようにします。 社会保障カードを受け取ったことのない外国人や移民のSSNはありません。 SSNは個人の死後に再利用することもできます。 社会保障庁が詐欺や個人情報の盗難の場合に新しい番号を発行すると、生涯にわたって複数のSSNを持つことがあります。
- 電子メールアドレスは、プライマリキーにはあまり適していません。 それらはユニークではありますが、時間とともに変化する可能性があります。 さらに、誰もが電子メールアドレスを持っているわけではありません。
効果的な主キーの選択
だから、良い主キーを作るのは何ですか? ほとんどの場合、サポートのためにデータベースシステムを使用してください。
データベース設計におけるベストプラクティスは、内部的に生成された主キーを使用することです。 データベース管理システムは、通常、データベースシステム外で意味を持たない一意の識別子を生成することができます。 たとえば、Microsoft Accessオートナンバー型データ型を使用して、RecordIDというフィールドを作成します。 オートナンバー型データ型は、レコードを作成するたびにフィールドを自動的にインクリメントします。 数字自体は意味がありませんが、クエリ内の個々のレコードを参照する信頼できる方法を提供します。
優れた主キーは通常短く、数字を使用し、特殊文字や大文字と小文字が混在しないようにすることで、素早くデータベースを検索して比較することができます。