1

私の問題はこの質問に関連しています: Entity Framework One-To-One Mapping Issues

既に多数のレコードを持つ Users テーブルがあります。

Users (Id, UserName, Password, FullName, Gender)

各ユーザーに一連の通知オプションを追加する必要があります。

NotifyForNewComment
NotifyForNewPost
NotifyWhenFriendSignsUp

後でさらにオプションを追加する必要があるかもしれませんが、常に 1 対 1 の関係があるため、これらを別のテーブル (UserSettings など) に格納するか、単に列としてユーザー テーブルに追加するかが問題です。

リンクされた質問 (上記) では、新しいテーブルを作成し、UserSettings テーブルの UserId を主キーにすることをお勧めします (そうしないと、Entity Framework が気に入らないため)。それが私がしなければならないことである場合、それに関していくつか質問があります。

  1. すべてのテーブルに Id 列があります。UserId が主キーになるため、UserSettings には Id 列がありませんか?

  2. UserSettings テーブルの ID 挿入を有効にする必要があるため、新しい User レコードを挿入するときに、UserId を使用して UserSettings レコードも挿入できますか?

  3. Users テーブルに既に多数のレコードがあることを考えると、UserSettings テーブルと 1 対 1 の関係を持つ新しい UserSettings テーブルを導入する場合はどうすればよいですか? スクリプトを実行して、Users テーブルに各ユーザーのレコードをいくつかのデフォルト値で追加するだけですか? それとも0対1の関係にしますか?

  4. これは 1 対 1 の関係であるため、新しいテーブルについて心配する必要はなく、既存の Users テーブルに列として追加するだけでよいでしょうか?

4

1 に答える 1

1

UserSettings テーブルのポイントが欠けていると思います。次のような列があります。

  • ユーザー設定 ID
  • ユーザーID
  • 通知

また、通知がいつ作成されたか、現在有効になっているかどうかなどの情報も含まれる場合があります。

通知が何であるかを正確に知っていて、それらが変更されない場合は、それらをユーザー テーブルに別の列として追加することを検討してください。

一方、これは自然な 1 対 N の関係であり、おそらくそのように実装する必要があります。

于 2012-12-04T18:55:49.707 に答える