たとえば、多くのユーザーがいるとします。ユーザーが何かメッセージを送信するたびに、他のユーザーのリストにメッセージを送ることができます (一括メール送信と同様)。ただし、ストレージ スペースを節約するために、メッセージを 1 回保存したいだけです。そのため、メッセージ受信者の 1 人がメールボックスを開くと、そこでそのメッセージを照会する必要があります。メッセージング システムのエンティティ (テーブル) の設定に関して、より効率的なのはどれですか? 注意: 非 RDBMS では、結合クエリは許可されていません。これはもっともらしい設定ですか、どうすればより効率的にすることができますか (1):
Table: Message (keeps one copy of all messages)
| Message_ID | Sender | Title | Body | List of Receivers |
// In this strategy, if I'm a receiver, I would check each message and search through the list of receivers to check and see whether I'm one of the receivers or not.
または、次の戦略 (2) を使用する必要があります。
Table: Message (keeps one copy of all messages)
| Message_ID | Sender | Title | Body |
Table: Message Receivers (store the same message ID for all receivers)
| Message_ID | Sender | Receiver |
// In this strategy, in runtime, make copies of the same message ID and same Sender and store one row for each receiver.
どちらの戦略がより効率的だと思われますか? つまり、単純に DBMS を反復処理するよりも、配列リストを反復処理する方が遅いですか?
どんなコメントでも大歓迎です。
*注: メッセージは任意に長くなる可能性があるため、同じメッセージの複数のコピーを保存したくありません。
ありがとうございました。