首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-08-28 
站内信 数据库设计msg表:idint自增长idtitlevarchar(128)短信标题contentvarchar(512)短信内容createTimed

站内信 数据库设计
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  不就可以了 

热点排行