ナショナル ID を「識別記録」の 1 つとして利用するシステムを開発していますが、クエリを簡単にするためにすべてのテーブルに nat_id を埋め込むのは良い考えですか? そうすることの欠点は何ですか?重要なことを見逃す可能性があるため、ここ SO の人々から意見を求めたいだけです。
2 に答える
@Oded が示唆しているように、法的およびプライバシーへの影響がある可能性があります (国によって大きく異なります)。
プライバシーの問題の 1 つの例は、一部の国では個人の生年月日 (一部の国では性別) が国民 ID 番号の一部になっていることです。それをスキーマ内のすべてのテーブルに複製することは、この情報へのアクセスを制限するのが難しくなるため、良い考えではないかもしれません。
それに加えて、純粋に技術的な問題がいくつかあります。
- すべての国に国民 ID システムがあるわけではなく、ある国ではさまざまな形式が使用されています。新しい形式に対応する必要があるときに、スキーマ内のすべてのテーブルを変更しなければならないことを本当に望んでいますか?
- 個人が国民 ID を持っていない状況を想像できます (訪問者、亡命希望者、無国籍者など)。どうやってデータベースに入力するのですか?
- 一部の国では、国民 ID に最も近いのは ID カードの番号であり、その番号は ID カードが再発行されると変更されます。つまり、同じ人でも人生のさまざまな時点で異なる ID 番号を持つ可能性があります。
代理主キーを使用し、国民 ID を属性として保存します。
国民 ID が適切なキーになるかどうかは、要件に大きく依存します。ビジネス プロセスの一部として国民 ID を記録すること、およびその方法でユーザー/従業員/誰でも一意に識別されることは要件ですか? その情報を人々に尋ねる法的権利はありますか? 彼らは国民 ID をあなたに開示する義務がありますか? これらすべてに「はい」の場合は、データベースのキーにすることはおそらく理にかなっています。
サポートする必要がある国民 ID の標準を理解していることを確認してください。たとえば、長さ、データ型、チェック ディジット、および予想されるルールに一致しない可能性があるレガシー コードまたはその他の特殊目的コードが使用されているかどうか。
プライバシー上の懸念があり、データベースから実際の ID を取得する必要がない場合は、代わりに国民 ID の安全なハッシュを保存できます。