研究了一下站内短信系统的设计?
一般的还比较简单的,但CSDN的私信系统实现起来感觉比较难?就是那个发件箱列表,不知是如何实现?可以翻译为我发表的主贴或我回复的主贴按时间排序!但这个在数据库表上如何设计比较好,查询上又如何实现呢?大家提供点建议!
一般的还比较简单的,但CSDN的私信系统实现起来感觉比较难?就是那个发件箱列表,不知是如何实现?可以翻译为我发表的主贴或我回复的主贴按时间排序!但这个在数据库表上如何设计比较好,查询上又如何实现呢?大家提供点建议!
fromid:发送者id
toid:接受者id
repymessid:被回复消息的id,主贴则为0
title:标题
message:内容
mid 私信编号
receiver 收信人
sender 发信人
title 标题
message 内容
parent 上一级
ptime 发布时间 readed 是否读过:0未读,1读过
managestate 这是我设计的表,哪果是主贴,则parent 为0,如果是回复贴,则parent为主贴的id但这个查询时我发现难以实现CSDN的效果
CSDN的发信箱显示的就是主贴的ID,含义应是:
查询主贴:有以下特点:我发布的或我回复过的,按时间排序主贴特征:parent=0
我发布: sender=我
我回复的:回复中sender=我,parent记录中(主贴中),sender可能等于我,也可能等于receiver就是求一sql,得到我发布的主贴,或我回复的主贴,按我回复和发布的时间排序如查SQL不能实现,如何改数据表?
只不过分类、回帖的叫法不同。排序就在数据库order by
where
p.parent = 0
AND
p.id = (select parent, max(ptime) from table where parent = p.id group by parent)
SNS这一类的站内信都是这要种形式的
你下个uchome的系统去看看吧。。
mid 私信编号
receiver 收信人
sender 发信人
title 标题
message 内容
//parent 上一级
ptime 发布时间rreaded 收信人是否读过:0未读,1读过 默认(0)
sreaded 发信人是否读过:0未读,1读过 默认(1)
rdel 收信人是否删除:0未删,1已删 默认(0)
sdel 发信人是否删除:0未删,1已删 默认(0)
从表:
rid
mid
author
msg
ptime在你的基础上面分成两个表来..看看行不
pmid 私信编号
msgfrom 发信人
msgfromid 发信人 id
msgtoid 收信人 id
folder 类型enum('inbox', 'outbox')
new 是否已读
subject 标题
dateline 发送日期
message 内容
delstatus 删除状态
related 关联id 也就是上级id
已解决!加了一个字段,用了子查询select * from table p
where
p.parent = 0
AND
p.id = (select parent, max(ptime) from table where parent = p.id group by parent)理解起来有点难,以后再研究吧