1

私が持っていると言ってnewsletters、次にsubscribers

ユーザーがニュースレターを受け取るたびに、subscribesこれをテーブル (サブスクライバー リスト) に格納する必要があります。

newsletter tableこれをまたはに保存する必要がありuser tableますか? つまり、ニュースレターに購読者のリストを保存する必要がありますか、それともユーザーが購読しているニュースレターのリストも保存する必要がありますか? どちらの場合も広く使用されます。ユーザーは自分が購読しているニュースレターも表示する必要があり、ニュースレターは購読しているユーザーを表示する必要があります。

読み取り用に最適化されたテーブル構造を設計するにはどうすればよいですか? NoSql ルートには行きたくありません。

4

2 に答える 2

4

あなたUsersSubscribersテーブルは同じですか?そうでない場合は、そうする必要があります。Usersテーブルには、ユーザー、Newslettersテーブル、ニュースレター、およびSubscribers2 つの間の関係が含まれている必要があります。

あなたが持っているとしましょう:

ユーザー

user_id    name
1          a
2          b
3          c

ニュースレター

newsletter_id   name
1               x
2               y
3               z   

加入者

user_id   newsletter_id
1         1
1         2
2         2

ユーザー a は x と y を購読しており、ユーザー b は y を購読しています。user_idまた、購読者テーブルの後にインデックスを追加する必要newsletter_idがあり、PK は である必要があります(user_id,newsletter_id)

于 2011-10-09T14:19:25.077 に答える
2

This is what many-to-many tables are for. You store the relationship between the two in a separate table. Example:

newsletter
 id,
 name,
 etc.

subscriber
  id,
  last, 
  first,
  etc.

newsletter_subscriber
  id,
  subscriber_id,
  newsletter_id,
  other attributes, etc.
于 2011-10-09T14:19:00.207 に答える