如何为消息传递应用程序设计数据库架构?

时间:2020-03-30 19:52:49

标签: php mysql laravel

我正在创建一个laravel网站,其中包含消息传递功能。 我想考虑以下因素。

  1. 双方(发送方和接收方)都可以删除其末尾的邮件。
  2. 如果任何一方删除了该邮件,则另一方仍应有权访问该邮件。
  3. 邮件中可能包含附件。

我想到了以下模式,但我认为它有太多重复,我正在寻找更好的东西。

messages table:
-----------------
id
title
body
received_messages table:
------------------------
message_id
receiver_id
sender_id
is_read
sent_messages table:
------------------------
message_id
receiver_id
sender_id

编辑:我想到了另一个方案:

messages table:
-----------------
id
title
body
user_messages table:
-----------------
message_id
sender_id
receiver_id
sender_del   // indicates that the sender deleted the message in their end
receiver_del // indicates that the receiver deleted the message in their end
read_at      // timestamp null by default

当一方选择删除消息时,相应字段(sender_del,receiver_del)将为true,以便该消息不会显示给该人

使用先前的架构,只有双方都删除了消息,消息才会从数据库中删除

<?php
$user = auth()->user();
$received = $user->receivedMessages; // to get received messages
$sent = $user->sentMessages; // to get sent messages

任何建议的修改,使用哪种模式或全新的模式都受到欢迎。 谢谢。

0 个答案:

没有答案