Database design 线程会话的数据库设计

Database design 线程会话的数据库设计,database-design,Database Design,我有这样一个场景: 用户A是注册用户 用户B只是一个访问者(未注册) 用户B需要向用户a发送消息(无需注册) 用户A需要回复用户B 无限重复步骤3和4 基本上我实现了这个简单的表结构: id id_message (= 0 on first contact or = id on replies) from to message date_created 其思想是,id_message等于0的每条消息都将位于公共URL上,以便双方都可以访问它并查看线程化对话。对于用户A,我只需要存储他的用户i

我有这样一个场景:

  • 用户A是注册用户
  • 用户B只是一个访问者(未注册)
  • 用户B需要向用户a发送消息(无需注册)
  • 用户A需要回复用户B
  • 无限重复步骤3和4
  • 基本上我实现了这个简单的表结构:

    id
    id_message (= 0 on first contact or = id on replies) 
    from
    to
    message
    date_created
    
    其思想是,id_message等于0的每条消息都将位于公共URL上,以便双方都可以访问它并查看线程化对话。对于用户A,我只需要存储他的用户id。对于用户B,由于他没有注册,我需要存储他的姓名、电话/手机号码和电子邮件地址(当然是序列化的)。每次发布新消息时,另一方都会收到有关更新的警告电子邮件

    然而,我发现这种方法存在一些问题:

    • 用户B详细信息的序列化似乎不“正确”
    • 每次需要回复时,用户B需要输入相同的详细信息
    • 我现在想不出还有什么别的办法,但我确信这种方法会带来其他问题

    基本上,我所寻找的是一个完全陌生的人与注册用户进行对话的最佳解决方案,同时保持双方的易用性。你们认为我应该采取这种方法吗?有没有其他聪明的方法来解决类似的问题?

    最简单的答案往往是最好的。让用户注册

    但是您可以有两种用户:基本用户和高级用户。基本用户不需要太多的注册方式,你甚至可以允许他们的电子邮件地址是可选的。高级用户必须包括所有的细节,他们才能使用所有的功能


    这样,您就有了一对真实的注册用户,他们可以相互通信,而对于新的基本用户来说,进入门槛很低。

    您可以在URL中使用一个有效的随机值,类似于会话ID,以便用户B必须拥有/知道此URL才能返回对话。当然,您可能希望通过电子邮件(?)将此URL发送给用户B,因此他仍然需要提供一些联系信息。如果你只是给他一个链接,或者让他把页面添加到书签中,那么很容易“丢失”对话而无法继续