我正在为我使用Laravel 5.3构建的论坛构建内部消息系统。基本上,我想拥有消息传递功能,类似于LinkedIn-User
可以将电子邮件发送到另一个User
,反之亦然。给定的对话将有一个线程,这将在两个用户之间进行。我一直在研究Stackoverflow上的一些问题,但是在数据库设计方面还没有找到我的内容。
这是我在想的:
messages
:
- ID PK
- sender_id fk到
users
。user_id
- 内容
message_recipients
:
- ID PK
- Message_ID FK到
messages
。id
- coctient_id fk至
users
。id
但是,我不能100%确定在users
,messages
和message_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个表。
您只能使用id
,sender_id
,recipient_id
,message
创建一个表格。
sender_id
和recipient_id
是指向users
表的外键。
这与许多关系有很多关系,您可以将此表视为枢轴,因此您可以定义belongsToMany
关系。另外,如果您经常使用它,则可以为此表创建模型。