站内信数据库设计
普通的站内信设计差不多应该是下面这样的:
消息表
id int(11)
sender_uid int(11)
recipient_uid int(11)
dialog_id int(11)
message_text_id int(11)
消息内容表:
message_text_id int(11)
message_text text
对话表
dialog_id int(11)
在用户发起一个站内信对话的时候,应该是下面几个步骤:
- 先往对话表插入一条记录,获得dialog_id
- 往消息内容表插入一条记录,获得message text id
- 往消息表插入一条记录,完成一条私信的发送
用户回复私信时,应该是下面几个步骤:
- 回复的时候能获得sender uid和dialog id信息
- 往消息内容表里面插入一条记录,获得message text id
- 往消息表里面插入对应的消息,完成一条私信的回复
在用户私信首页,应该信息每条对话的最后一条记录,查找步骤如下:
- 假设当前登录用户ID为user id,先找出所有和user id相关的dialog_id
- 对消息表进行查找,每个dialog id为dialog id,并且sender uid或recipient uid等于user_id的记录,根据时间排序,获得最后一条消息记录
当用户点击具体的一个对话时,应该显示出这个对话的私信记录:
- 根据对话ID,按照时间顺序读出所有记录
- 把记录显示出来
问题:这样设计的时候性能是否有缺陷?
今天天气不错
10 years, 11 months ago