网站私信表(留言表)的设计 && 空间换性能的思路

场景

私信系统

A向B发送了一条私信,B回复了两条私信 ,无论是在A用户私信列表 还是B私信列表 都应该是只看到一条;
在私信详情 都可以看到A和B通信的所有信息

分析

  • 除了明显的唯一性显示问题 && 全部显示问题; 还有删除,已经阅读的问题; A删除了自己发送的一条私信;但是B还是应该可以看到,不要相互影响
  • 一条私信的发生,存数据库中两份,唯一的不同是这条私信的归属

参考文档

  • 大爷就是大爷,没想到啊 没想到
  • OSChina 的留言表设计说明 https://www.oschina.net/question/12_70252?sort=default&p=1

解决

  • 表结构的设计
    网站私信表(留言表)的设计 && 空间换性能的思路
  • 解决思路
    • 一条私信存储两条,唯一的不同是私信的归属
  • 介绍重要字段 user_id friend_id from_user_id to_user_id
    • user_id是标识这条数据信息属于哪个用户
    • friend_id 标识关联的用户
    • 四个字段作用并没有重复, 不然的话还需要另外一个字段标识是发出的留言还是收到的留言,在做唯一性的筛选的 && 排序的时候 可能就需要union了,影响性能