0

私は最近、Microsoftの製品全体のWindowsアカウントのアカウントシステムと同じように、すべての製品のアカウントシステムを作成するという任務を負っています。ただし、要件の1つは、同じ情報を持つアカウントを簡単にチェックできることです。これにより、取引されたアカウント、突然の、場合によっては不正な情報の変更などを検出できます。

この問題を解決する方法を考えたとき、データの冗長性を減らすことができると思いました。最終的にはデータセットを以下で説明するように処理するだけなので、ストレージスペースと処理時間を節約できる可能性があると思いました。

これが現在どのように設定されているかについての少しの背景:

  • アカウントテーブルには、IDとユーザー名のみが含まれます
  • プロファイルテーブルには、アカウントへの参照と、名前、郵送先住所、電子メールアドレスなどの個別のプロファイルデータへの参照が含まれています。
  • 名前テーブルには、IDと、個人の名、姓、ミドルネームが含まれます
  • 住所テーブルには、住所に関するデータが含まれています
  • メールアドレステーブルには、メールアドレスのIDとメールボックスおよびドメインが含まれます

プロファイルレコードは、(多くのアカウント間で共有される)プロファイルデータの一意の部分を特定のアカウントに関連付けるものです。「JohnSmith」という名前の人が50人いる場合、名前テーブルには「JohnSmith」レコードが1つだけあります。ユーザーが自分の情報の一部を変更すると、プロファイルレコードがソフト削除され、新しいレコードが作成されます。これは、変更の追跡を容易にするためです。

UNIQUE(FirstName, MiddleName, LastName)プロファイリング後、のような制約を作成することは、レコードの挿入に関してかなり苦痛であることに気づきました。それは単に私たちが支払わなければならない価格ですか、それともより良いアプローチがありますか?

4

2 に答える 2

1

ジョン・スミスという名前の2人についての記録を持つことは冗長ではありませんが、必要です。

あなたが提案したアプローチは、最適とはほど遠いものです。「プロファイルレコードはソフト削除され、新しいレコードが作成されます。これは、変更の追跡を容易にするためです。」削除して再挿入すると、他のテーブルの依存レコードで問題が発生します。変更を追跡するためのはるかに簡単な方法があります-いくつかのサードパーティツールを検索します

作成されたテーブルに関しては、データをそれほど多くのテーブルに分割する必要はありません。NameテーブルとAccountテーブルをマージしてみませんか。アドレステーブルとメールアドレステーブルの両方が必要ですか?

于 2012-12-14T12:29:01.547 に答える
1

私は自分の研究を終了し、挿入性能が重要でない場合はこのアプローチで問題ないと判断しました。重要な場合は、合理的な範囲内でデータの冗長性を高めることは、許容できるトレードオフです。

私の質問で説明されているソリューションは、私のパフォーマンスのニーズに適しています。私たちのモデルでは、ストレージは挿入時間よりも高価であると考えられています。

于 2012-12-20T18:15:08.160 に答える