Представьте себе, например, что у меня много пользователей. Каждый раз, когда пользователь что-то сообщает, он / она может отправить это в список других пользователей (аналогично массовой рассылке). Тем не менее, я просто хочу сохранить сообщение один раз, чтобы сэкономить место на диске. Поэтому, когда один из получателей сообщения открывает свой почтовый ящик, он / она должен запросить там это сообщение. Что более эффективно с точки зрения настройки сущностей системы обмена сообщениями (таблиц)? Обратите внимание: в не-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.
Какая стратегия кажется более эффективной? то есть итерация в массиве медленнее, чем просто итерация в СУБД?
Любые комментарии будут высоко оценены.
* Примечание: сообщения могут быть произвольно длинными, поэтому я не хочу хранить несколько копий одного и того же сообщения.
Спасибо.