读书人

站内信 数据库设计解决办法

发布时间: 2012-08-28 12:37:01 作者: rapoo

站内信 数据库设计
msg表:
id int 自增长id
title varchar(128) 短信标题
content varchar(512) 短信内容
createTime datatime 发信时间
user_has_msg表:
id int
senderid int 外键关联发送者卡号
receverid int 外键关联收信人
msgid int 外键关联短信息
sendStatus tinyint 发件箱中的状态:0--普通;1--删除
receveStatus tinyint 收件箱状态:0--普通;1--删除
readStatus tinyint 阅读状态:0--未读;1--已读
我的问题是:1。怎么写语句实现发件箱中的状态:0--普通;1--删除 收件箱状态:0--普通;1--删除 阅读状态:0--未读;1--已读
2。发件人和收件人是同一群人怎么写外间关联呢



[解决办法]
关于问题1,那你这个表格设计不合理. SendStatus和receiveStatus 这两列可以演化成 Status, Message(Send/receive) 这两列.这样的话,对于你以后开发会直接明了些.当然按照你现在的设计也能做,但是对于你的要求,需要两个Select, 然后再union.

问题2:
select * from user_has_msg
inner join user send on send.id = user_has_msg.senderid
inner join user receive on receive.id = user_has_msg.senderid

主要就是 user使用不同的关联名称.
[解决办法]
状态1 (发件、收件、已删除、订阅邮件、垃圾邮件)
状态2 (已读 未读 标记)
[解决办法]

SQL code
1。怎么写语句实现发件箱中的状态--如果按照我的思路设计 join之后加上条件 where 状态1=发件--发件箱不分其他什么状吧2。发件人和收件人是同一群人怎么写外间关联呢--你查询这个是什么用途?-- where senderid =receverid  不就可以了 

读书人网 >SQL Server

热点推荐