私は、ユーザーが単一のカテゴリ(つまり、「本」)に従ってさまざまなメーリングリストにサインアップできるサブスクリプション機能を構築しています。
MySQLでテーブルを設計する際に、次の2つのオプションに出くわしました。
オプション1
/* Table 1 */
Books
Email
/* Table 2 */
Magazines
Email
各ユーザーは、複数のリストをサブスクライブできます。
オプション2
/* Table 1 */
All Categories
Email
Category_ID
/* Table 2 */
Category_ID
Category
基本的に、すべての電子メールのマスターテーブルからカテゴリIDを相互参照しています。その表では、ユーザーが複数のカテゴリにサブスクライブできるため、電子メールが繰り返される可能性があります。データベーススキーマの設計の経験はありませんが、データベース内の実際の文字列を参照するのではなく、各カテゴリにIDを付けたいと思います。
どちらに行きますか?カテゴリIDを相互参照する方が速いですか、それとも各カテゴリを独自のテーブルに分割する方が速いですか?(各カテゴリに新しいコメントが入ったときにユーザーに通知するために、長いリストを電子メールで送信していると仮定します)。