我正在尝试使用PHP和MySQL创建一个非常简单的消息传递系统,但是我有一些问题需要决定如何在这里构建事物。
我开始设计但是我现在完全陷入困境。当只有注册用户和客户服务成员时,一切都很好:我只需将每个消息与user_id关联为发送者或接收者。但是,当我们添加访客用户时,user_id是无用的,因为它们没有注册(因此没有用户ID)。这意味着我需要为他们存储所有的名字,姓氏,电子邮件和手机(在注册用户的情况下创建冗余数据,因为我已经为他们提供了这些数据)
表格将包含 created_at 列。
我的问题是:访客用户在用户表中没有记录,所以我不能在消息表上有一个user_id字段。此外,我需要告诉谁发送消息(因为我们的客户服务部门可以向注册/访客用户发送消息)。
老实说,如果没有在大多数情况下等于null的列,我找不到实现此目的的方法。
对此有任何帮助将不胜感激。
提前致谢
答案 0 :(得分:0)
您需要为来宾添加一条记录,作为数据库中的用户帐户。设置默认值,并记录他的IP地址,因此,如果他决定注册,您将使用新的用户帐户更新访客记录。
添加到期日和cron作业,以删除在x天内无效的任何访客帐户。
答案 1 :(得分:0)
您遇到过一个关系模型不能完全适合的示例。这是一个已知问题,有几个Stack Overflow posts。
好消息是 - 数据库设计中没有“干净”的解决方案。有一些常见的模型,但它们都有不同程度的不愉快。
坏消息 - 你必须做出权衡,并承担后果。