内部消息传递系统Laravel数据库设计



我正在为我使用Laravel 5.3构建的论坛构建内部消息系统。基本上,我想拥有消息传递功能,类似于LinkedIn-User可以将电子邮件发送到另一个User,反之亦然。给定的对话将有一个线程,这将在两个用户之间进行。我一直在研究Stackoverflow上的一些问题,但是在数据库设计方面还没有找到我的内容。

这是我在想的:

messages

  • ID PK
  • sender_id fk到 usersuser_id
  • 内容

message_recipients

  • ID PK
  • Message_ID FK到messagesid
  • coctient_id fk至 usersid

但是,我不能100%确定在usersmessagesmessage_recipients之间应该存在的关系类型。用户会有很多消息。消息将属于用户。但是,我该如何考虑message_recipients表?

随时建议使用不同的设计:)

尝试这种结构:

messages:
id          - int, autoincrement id
parent_id   - int. To maintain message threads
sender_id   - int. Senders Id
recipient_id- int. Recievers Id
content     - text, Message content
status      - enum('0', '1') for Read, Unread, Deleted etc

或通过维护外国密钥关系将其分解为2或3个表。

您只能使用idsender_idrecipient_idmessage创建一个表格。

sender_idrecipient_id是指向users表的外键。

这与许多关系有很多关系,您可以将此表视为枢轴,因此您可以定义belongsToMany关系。另外,如果您经常使用它,则可以为此表创建模型。

最新更新