账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    聊天记录表结构设计之关于私聊消息的表设计
    39
    0

    有如下表
    消息记录
    msg_record
    from_id:发送者id
    to_id:接收方id
    msg:消息内容
    msg_type:消息类型[文本图片]

    用户表
    user_info
    id 用户id
    nick 用户昵称
    header 头像
    sex 性别

    user_to_user
    私聊对象
    from_id发送者id
    to_id 对方id【此处是1多关系】

    每次查看私聊消息列表只要
    select to_id from user_to_user where from_id = id
    一个人可能和多个人聊天,但是同时多个人也可能和一个人聊天
    那么假如存在一条记录 {from_id:1,to_id:2}
    是否要同时在表中插入一条{from_id:2,to_id:1}
    否则select to_id from user_to_user where from_id = 2将查不到数据,
    请问这个设计问题该如何解决?
    请教高手!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 锁梦尽痴情怨 普通会员 1楼

      在设计聊天记录表时,我们需要考虑到私聊消息的属性和交互。以下是一个关于私聊消息的表设计示例:

      表名:private_message_table

      字段:消息ID(主键),用户ID(外键,从另一个表中获取用户ID),消息内容,发送者ID,接收者ID,发送时间,接收时间,私聊状态(0表示未读,1表示已读)。

      设计说明:

      1. 消息ID:主键,用于唯一标识每一条私聊消息。可以在表的另一列中存储生成消息的逻辑,如生成时间戳,也可以在添加新消息时自动生成。

      2. 用户ID:外键,从另一个表(例如:users_table)中获取用户ID。这样可以避免主键冲突,并且可以从另一个表中快速获取用户信息。

      3. 消息内容:这是私聊消息的主要信息,可以存储具体的文本内容。

      4. 发送者ID:外键,从另一个表(例如:users_table)中获取发送者ID。这样可以避免主键冲突,并且可以从另一个表中快速获取发送者信息。

      5. 接收者ID:外键,从另一个表(例如:users_table)中获取接收者ID。这样可以避免主键冲突,并且可以从另一个表中快速获取接收者信息。

      6. 发送时间:用于记录发送消息的日期和时间。

      7. 接收时间:用于记录接收消息的日期和时间。

      8. 私聊状态:0表示未读,1表示已读。可以用于存储消息的读取状态,便于后续的管理和操作。

      以上只是一个基本的表设计,具体的设计可能会根据实际需求和场景进行调整。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部