私は最近、Microsoftの製品全体のWindowsアカウントのアカウントシステムと同じように、すべての製品のアカウントシステムを作成するという任務を負っています。ただし、要件の1つは、同じ情報を持つアカウントを簡単にチェックできることです。これにより、取引されたアカウント、突然の、場合によっては不正な情報の変更などを検出できます。
この問題を解決する方法を考えたとき、データの冗長性を減らすことができると思いました。最終的にはデータセットを以下で説明するように処理するだけなので、ストレージスペースと処理時間を節約できる可能性があると思いました。
これが現在どのように設定されているかについての少しの背景:
- アカウントテーブルには、IDとユーザー名のみが含まれます
- プロファイルテーブルには、アカウントへの参照と、名前、郵送先住所、電子メールアドレスなどの個別のプロファイルデータへの参照が含まれています。
- 名前テーブルには、IDと、個人の名、姓、ミドルネームが含まれます
- 住所テーブルには、住所に関するデータが含まれています
- メールアドレステーブルには、メールアドレスのIDとメールボックスおよびドメインが含まれます
プロファイルレコードは、(多くのアカウント間で共有される)プロファイルデータの一意の部分を特定のアカウントに関連付けるものです。「JohnSmith」という名前の人が50人いる場合、名前テーブルには「JohnSmith」レコードが1つだけあります。ユーザーが自分の情報の一部を変更すると、プロファイルレコードがソフト削除され、新しいレコードが作成されます。これは、変更の追跡を容易にするためです。
UNIQUE(FirstName, MiddleName, LastName)
プロファイリング後、のような制約を作成することは、レコードの挿入に関してかなり苦痛であることに気づきました。それは単に私たちが支払わなければならない価格ですか、それともより良いアプローチがありますか?