数据库设计问题

fashchina 2007-05-22 04:50:20
现在我有下面的几个设计上的疑问:
1.在设计系统中,用户和用户之间的留言[短消息]之类,分收/发件箱,
那么,这个设计怎么做比较合理
2.在有3个以上表的信息,都对应一个表,比如,3个表都是信息类的,而D表是存放这些信息相关的留言或者评论的,那么,怎么设计会比较合理:
在D表加一个字段区别还是其他的方法?因为很可能D的外键存在相同值
3.我的好友系统又怎么设计比较合理,和QQ好友差不多做法,
...全文
212 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyFor 2007-05-22
  • 打赏
  • 举报
回复
删除时只做删除标记~~~或在一方已做删除标记的情况下删除记录.
fashchina 2007-05-22
  • 打赏
  • 举报
回复
但是,很多情况下,都是这样的,一条消息,对于A来说是发送者,对于B来说是接收者,就是说,
如果A在发送箱删除了改消息,那么,B在接收箱应该还是存在的,
但是,你上面的设计,好象不能这样
Yang_ 2007-05-22
  • 打赏
  • 举报
回复
1.在设计系统中,用户和用户之间的留言[短消息]之类,分收/发件箱,
那么,这个设计怎么做比较合理
类别表:
Id 名字 类别(1代表系统、2代表自定义)
1 发件箱 1
2 收件箱 1
3 垃圾箱 1
4 自定义1 0
...

留言表:
Id 标题 内容 所属
1 XXXX1 YYYYYYYYY1 1
2 XXXX2 YYYYYYYYY2 2
3 XXXX3 YYYYYYYYY1 4
...


2.在有3个以上表的信息,都对应一个表,比如,3个表都是信息类的,而D表是存放这些信息相关的留言或者评论的,那么,怎么设计会比较合理:
在D表加一个字段区别还是其他的方法?因为很可能D的外键存在相同值

在D表加一个字段区别,不使用外键,而用check或者出发起来约束
check写法:
((区别字段=1 and exists (select 1 from 表1 where id=信息id)) or
(区别字段=2 and exists (select 1 from 表2 where id=信息id)) or
(区别字段=3 and exists (select 1 from 表3 where id=信息id))
)
触发器写法类似
不过这可能不是好方法,效率有影响

3.我的好友系统又怎么设计比较合理,和QQ好友差不多做法,
好像可以参考1的设计,同时解决好友、黑名单、陌生人等

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧