0

ユーザープロファイルセクション用に正規化した一連のテーブルがあります。表は次のとおりです。

users --> userProfileSettings --> userPersonalInfo --> userContactInfo --> userAddresses --> userBusinessInfo --> userBusinessTags --> userBusinessLogo

users テーブルにはユーザー名とパスワードが含まれ、プロファイル設定には、アカウントがアクティブか非アクティブか、およびメンバーになった日付に関する情報が含まれています。私が頭の中でこれを持っている方法は、ユーザーが各テーブルに1つのエントリしか持てないことです.メンバーになるためには(userBusinessLogoを除いて)各テーブルにエントリが必要です.複数の行を許可する唯一のテーブルユーザーを識別できるのは、userBusiness タグです。

1対多の関係では同じユーザーの複数の行が許可されるため、これを達成するための最良の方法は何ですか? 同様の種類のセットアップを探し回っていますが、例が見つからないようです。

4

1 に答える 1

1

スキーマを過度に正規化した可能性があります。一般に、テーブル間に厳密な1対1の関係がある場合は、それらを1つのテーブルにマージすることを真剣に検討する必要があります。ユーザーが本当に1セットの個人情報、1セットの連絡先情報、1セットの住所、および1セットのビジネス情報しか持てない場合は、これらすべてを1つのテーブルにまとめて、意図せずにこれらの制約に違反することを心配する必要がないようにします。データベース内。

経験から、連絡先情報と住所は通常、個人/ユーザーレコードと多対1の関係になるため、アプリの目的でそれら(または他のテーブル)が本当に1対1であるかどうかを再検討する必要があることがわかりました。 。

于 2012-06-28T16:57:39.383 に答える