1

多くのアプリケーションが、レコードをユーザーに公開するときに、データベースの主キーを一見ランダムな代替IDに置き換えるのはなぜですか?

私の推測では、ユーザーがテーブル内の他の行を推測するのを防ぐことができます。もしそうなら、それは単なる誤った安心感ではありませんか?

4

2 に答える 2

4

ここで代理キーについて話していると思います。代理キーの望ましい、または想定される利点の 1 つは、外部の意味やデータベース外のものへの依存によって負荷がかからないことです。したがって、たとえば、システムのユーザーに影響を与えることなく、代理キーの値を安全に再割り当てしたり、キーをリファクタリングまたは破棄したりできます。

通常、代理キーはユーザーから隠されているため、ユーザーはそのような外部依存関係を取得しません。ユーザーから隠されることは、実際には、EFCodd によって提案された代理キーの元の定義の一部でした。キー値がユーザーのブラウザ キャッシュまたはお気に入りリストに存在する場合、それらは「代理」としてはあまり使用されなくなります。これが、あるキーがデータベース内でのみ使用され、同じテーブルに対して別のキーがアプリケーションで表示されるのを目にする一般的な理由の 1 つです。

于 2011-08-04T21:12:31.803 に答える
1

使用しているアプリケーションの種類に依存する可能性があると思います。私が使用しているエンタープライズ ソフトウェアは、私が勤務している会社でのみ使用され、一般には外部からは利用できません。この場合、person テーブルの情報には一意性がないため、ユーザーに関連するレコードの代理キーを表示できるようにすることが重要な場合がよくあります。2 人のジョン スミス (実際には 1000 人以上います) が存在する可能性がありますが、これらはまったく異なる人物です。彼らは同じ会社の住所を持ち、別の人である場合さえあります(たとえば、息子はしばしば父親にちなんで名付けられ、同じ医療行為で働いています). そのため、フォームやレポートで代理キーを参照して、必要と思われるレコードを使用していることを確認する必要があります。または、レポートで見たジョン・スミスについてさらに詳しく調べたい場合は、正しいものを見つけるために 1000 件すべてを調べなくても、アプリケーションでどのように検索するのでしょうか? 本物の ID と同様に偽の ID を作成するのは時間がかかり (一度に何百万ものレコードをインポートします)、会社のアプリケーションの外ではデータが見えないため、実質的な利益はありません。

一般に公開されている Web アプリの場合、この情報を表示したくない場所を確認できます。

于 2011-08-04T22:14:00.993 に答える