UCenter中关于短消息这一块的数据表结构如下:

不大理解这里的delstatus/related二个字段的作用。
delstatus语义上应该是标识该消息的删除状态
related语义为关联,
现在试着以admin给yibin001发一件消息

所执行的SQL语句
SELECT count(*) FROM `ucenter`.uc_pms WHERE msgfromid='1' AND msgtoid='2' AND folder='inbox' AND related='0'
INSERT INTO `ucenter`.uc_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,related,message,fromappid) VALUES ('admin','1','2','inbox','1','测试消息','1235570029','0','测试消息','1')
SELECT count(*) FROM `ucenter`.uc_pms WHERE msgfromid='2' AND msgtoid='1' AND folder='inbox' AND related='0'
INSERT INTO `ucenter`.uc_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,related,message,fromappid) VALUES ('admin','2','1','inbox','0','测试消息','1235570029','0','测试消息','0')
INSERT INTO `ucenter`.uc_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,related,message,fromappid) VALUES ('admin','1','2','inbox','1','测试消息','1235570029','1','测试消息','1')
REPLACE INTO `ucenter`.uc_newpm (uid) VALUES ('2')
以yibin001登录并回复短消息
SELECT count(*) FROM `ucenter`.uc_pms WHERE msgfromid='2' AND msgtoid='1' AND folder='inbox' AND related='0'
UPDATE `ucenter`.uc_pms SET subject='回复', message='回复', dateline='1235570298', new='1', fromappid='1' WHERE msgfromid='2' AND msgtoid='1' AND folder='inbox' AND related='0'
SELECT count(*) FROM `ucenter`.uc_pms WHERE msgfromid='1' AND msgtoid='2' AND folder='inbox' AND related='0'
INSERT INTO `ucenter`.uc_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,related,message,fromappid) VALUES ('yibin001','2','1','inbox','1','回复','1235570298','1','回复','1')
REPLACE INTO `ucenter`.uc_newpm (uid) VALUES ('1')
光看这部分有点晕,没看出delstatus/related二个字段的作用。

删除状态 个人认为 是一个标识,因为现在的大部分系统中的删除,并不是实际意义的删除,只是改变了显示状态,在检索的时候不被检索而已,这样方便日后回档。
@along:
按发件人ID查询短消息是这样写的
$arr1 = $this->db->fetch_all("SELECT * FROM ".UC_DBTABLEPRE."pms WHERE msgfromid=’$uid’ AND msgtoid=’$touid’ AND dateline>=’$starttime’ AND dateline<’$endtime’ AND related>’0′ AND delstatus IN (0,2) ORDER BY dateline");
$arr2 = $this->db->fetch_all("SELECT * FROM ".UC_DBTABLEPRE."pms WHERE msgfromid=’$touid’ AND msgtoid=’$uid’ AND dateline>=’$starttime’ AND dateline<’$endtime’ AND related>’0′ AND delstatus IN (0,1) ORDER BY dateline");
$arr = array_merge($arr1, $arr
$arr = array_merge($arr1, $arr2);
这里的delstatus有三个标志位0/1/2
有时间接着看删除短消息部分
@along:
另外,就现在的Discuz! 7.0来讲的话,短消息删除后就无法恢复了
这个你得分析一下 1.0 和 1.5 版本
1.0 是
delstatus 删除状态,甲删除为1,乙删除为2 甲乙都删除,才从数据库里删除。
related 是发起的悄悄话pmid ,即以事件为线索,可以列成帖子状。
1.5
delstatus 基本没有用了,短消息是分开发的,而且那个fromuid 什么的都有了新的功能
related 是不是子pm 。这是为了向下兼容使用 1.0 的应用,所以没有改字段名。
新的1.5的悄悄话,是以人为线索的,类似QQ聊天记录。
总结:1.5 的悄悄话,那叫一个乱字。
@blue:
嗯,的确1.5中的悄悄话是以人为单位,同一人发送的短消息在短消息列表中只会显示最新的一条,查看信息时才会显示对方与自己的历史记录,类似于聊天记录。
没有与1.0对比,还真看不出某此字段的意义。
这是哪个GUI tool来着?
Thanks for sharing your thought. Wish you good luck for your future endeavors.