我设计了一个数据库模式,允许使用Facebook风格的消息传递系统(没有能够编辑消息的功能)。那就是:我在模式中做错了什么?
我的想法是用户将消息发送到对话,而不是给其他用户。这样,用户订阅对话,允许多种用户风格的聊天。
A conversation
就像一个房间。如果用户bob和用户joe开始通话,如果一个通话不存在,将会创建一个通话。每当'鲍勃'和'乔'说话他们的消息总是会有相同的conversation_id
。这将允许我通过收到conversation_id
的所有消息来返回他们的所有通信。
多个用户可以是conversation
的一部分。 conversation_users
表存储conversation_id
和user_id
,它允许我查询表得到All users who have the conversation_id X
。
我遇到的问题是我想查询:Give me the conversation_id used by Joe and Bob
,所以我可以用这个conversation_id
返回'Joe'和'Bob'之间的所有消息。
我怎么能做到这一点?我想我已经错过了一些重要的模型,这使得它看起来比需要的更复杂。但我看不到什么。
这是完美的。我需要刷我的SQL,因为如果没有你的建议,我需要一段时间才能在单个查询中弄清楚。感谢Ollie。 – 2015-02-07 16:02:19
奥利,一个简单的问题,这可以通过一个Inner Join来完成吗?如果是这样更快? – 2015-02-07 22:53:55
感谢Ollie。删除用户名,我重写你的第一个像这样:https://gist.github.com/jamesjeffery/f766813d5efcd041561e ...不知道是否这样做,只是现在检查您的编辑。 – 2015-02-07 23:46:10