想象一下,例如,我有很多用户。每次用户发送消息时,他/她都可以向其他用户列表发送消息(类似于群发电子邮件)。但是,我只想存储一次消息以节省存储空间。因此,当其中一位消息接收者打开他的邮箱时,他/她必须在那里查询该消息。在设置消息系统的实体(表)方面,什么更有效?请注意:在非 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.
哪种策略似乎更有效?即遍历arraylist 比简单地遍历DBMS 慢吗?
任何意见将不胜感激。
*注意:消息可以任意长,因此我不想存储同一消息的多个副本。
谢谢你。