2016-07-24 40 views
0

我正在尝试使用对话功能进行聊天作为我的学习项目。任何用户都应该能够将消息写入其他用户并从该用户那里接收答案,而其他人不应该访问该对话。 在MySQL中,我创建了带有ID,登录名,密码和特权的表,表message带有ID,作者(FK到用户ID),消息文本,发布时间和对话ID(FK),以及表dialogue带有ID,FK给一个用户,FK给另一个用户和带有一些参数的附加列。我想让我的聊天方式让我只用一个查询就可以让所有来自两个给定用户的消息相互通信,但在上面的实现中,我必须先检查两列,先查找一个用户,然后检查所有具有该用户的条目用户找到他的对话者。只有这个查询才会返回一个可用于获取所有消息的对话PK。我认为这种认识是完全错误的,但我找不到解决问题的方法。我试图将对话ID附加到表user,但这使我的基础变得更加复杂。 我该怎么办?来自同一表格的两个FK具有相同的含义

+1

显示您的模式,因为上面的帮助很小 – Drew

+0

将其作为文本发布并附带问题的编辑。我们大多数人不会随意跳到随机服务器上,点击:p – Drew

+0

但puush不是随机的服务器。 http://puush.me/ –

回答

0

这是我的第一个模式:http://puu.sh/qdLMw/f9acde605c.png但我做了另一个表,它将包含对话者和对话ID。当某个用户向另一个用户发送消息时,从当前用户设置为发送者并将他的对话者设置为目标的该表中的查询请求行,并从该行获得对话ID。如果没有这样的线路,系统将运行另一个查询,在其位置切换发送者和目标。如果结果再次为空,将在对话表中将两个用户相互链接的两条线创建新对话。 http://puu.sh/qdORJ/2122558f64.png 对我来说这看起来稍微好一些,如果有人有更好的答案,请告诉我。

相关问题