我在用struts1做一个收发消息的小应用,现在遇到的问题如下:
(1)A把一条消息发给了B、C、D多个用户,当B登录后提示有一条未读消息,有个按钮,点击之后就显示该消息,同时在Action里把“消息表”的“已读类型”设置为“1”(数据库的’消息表‘里有个’已读类型‘字段,默认为’0‘)。可是当C、D各自登录之后就不会提示有一条新消息了,因为“已读类型”前面已经被B修改了。
(2)还是上面A发送给B、C、D的那条消息,B如果把它删除,那么C、D登录之后也无法查到该条消息。
我的数据库里就两个表:用户表和消息表,用户表字段为用户名和密码,消息表字段有标题、内容、发送者、接收者、已读类型(默认为0)
我没多少编程经验,也没做过啥项目,现在遇到以上问题不知道怎么解决,是数据库表设计时考虑的不周还是收发消息的逻辑方面的问题还是啥问题,希望有这方面经验的人能帮我一下,解决这个问题,技术方面我掌握的很有限,如果您能好的解决办法,希望您在回答的时候尽量详细点,谢谢了。(个人邮箱:htd123741@sohu.com)
把消息表分成两个表 一个存放消息体 一个存放用户及消息的信息
这个问题很简单,你消息存放的时候要针对每一个接受者存放一份,自己看自己的那一条,自己改自己的消息的状态
如果要做到不冗余,可以将消息表拆成两个,消息体是一个表,另外一个表存放发送者和接受者以及消息的状态,有个外键连接到消息体的主键。删除的时候只删除消息发送信息的表。
如果想记录用户发送的记录,那就将发送用户记录在消息体的表中
楼主加我QQ513215275,我已经按你的要求写好了一个web项目例子,可以直接发布运行,我用的数据库是sqlserver