我正在开发一个新网站,我必须为我们的用户发送私信.我已经在其他项目上做过这个,但那里的设计似乎不对(例如,我不能让两个人参与一个消息).那么"正确"的方法是什么呢?我想为我的用户提供与Facebook相同的功能(同样,我已经完成了这个但感觉很脏:))因此系统应该在对话和类似线程的消息中支持2个或更多用户.
我在想,一个解决方案就是有两个这样的表:
pm_messages:id | pm_messages_id | user_id | 标题| 内容| 约会时间
pm_recipients:id | pm_messages_id | user_id | has_seen | 删除
我会将实际内容存储在"pm_messages"表中,然后将收件人(包括原始发件人)存储在"pm_recipients"表中.
这是正确的方向还是我完全没有这个?让我困扰的是,在所有收件人删除了导致某些尴尬的删除逻辑的邮件之前,邮件才真正被删除.
如果可以有多个收件人,并且他们可以发送回复消息,那么您更多地处理某种聊天应用程序.您可以将"聊天"会话或对话存储在单独的表中,对话和参与者之间具有1-n关系,以及对话和消息之间的1-n关系(下面列出的表格).但最终,它当然取决于你.对于常规消息发送,当您使用消息和收件人之间的1-n时.
table user: - id (pk) - name table conversation (one entry per "chat/messaging" session) - id (pk) - started_by_user_id - started_ts table conversation_participant (keeps track of all recipients) - id (pk) - conversation_id - user_id (refers to user.id) table message - id - conversation_id (refers to conversation.id) - sender (refers to user.id) - msg