我正在寻找创建用户消息系统(类似于Facebook)。
我想知道的是桌面结构应该是什么样的?我的要求如下:
邮件在用户之间交换 - 发件人可以选择多个用户发送邮件。
消息以线程样式布局显示,作为1-1对话。即每个收件人的回复都会出现在自己的帖子中。
无法删除单个邮件,但可以删除某个邮件。删除线程不会删除任何消息,只是从用户的收件箱中删除该线程。但是,如果他/她没有从他/她的收件箱中删除该帖子,则其他用户仍然可以访问该帖子。
这就是我现在所拥有的:
Table messages ============== id (PK) user_id (from) subject body sent_at Table message_recipients ======================== message_id (PK) user_id (PK) read_status
编辑:以下内容如何:
Table messages ============== id (PK) thread_id user_id (from) body sent_at Table threads ============= id (PK) user_id (from) subject Table thread_recipients ======================= thread_id (PK) user_id (PK) read_status sender_deleted recipient_deleted
答案 0 :(得分:4)
我建议至少遵守以下规定:
用户,主题,消息
从那里你可以简单地为你的线程(to_user_deleted,from_user_deleted)分配一些标志,这些标志将相应地更新。
当然还有很多事情需要考虑,比如你想要考虑什么样的事情。例如:
在设计数据库时,您需要考虑所有这些因素。
答案 1 :(得分:0)
为什么不使用像Jabber这样的东西(例如:OpenFire或Web Client)
如果你需要PHP与它进行交互,你可以使用类似的东西:
http://code.google.com/p/xmpphp/或http://code.google.com/p/jaxl/
答案 2 :(得分:0)
@Angelo R.想知道为什么我们需要线程表?这不是任何讨论板。如果要检索消息的整个线程/对话,只需按源和收件人ID进行查询即可。 另外,如果你使用Thread,没什么不好的。但在这种情况下是什么 如果是新消息 - 新thread_id(自动创建),如果回复现有会话,则您拥有thread_id,但如果您正在创建新消息(比如facebook popup),您不知道以前是否有任何会话或如果thread_id可用或不可用,除非您对它执行特殊查询。 这是我的想法。告诉我,我在某处可能是错的。