许多网站都有从用户向用户发送消息的概念。当您向其他用户发送消息时,该消息将显示在其收件箱中。您可以响应该消息,它将显示为该消息线程中的新条目。
您应该能够看到您是否已经阅读过某条消息,并且获得新回复的消息应该能够位于顶部。
您如何设计类(或表或其他)来支持这样的系统?
答案 0 :(得分:1)
user
id
name
messages
id
to_user_id
from_user_id
title
date
message_post
id
message_id
user_id
message
date
类将反映这种模式
答案 1 :(得分:1)
您可能希望扩展Owen的架构以支持邮件仅存储一次的批量邮件。还修改了所以只有一个发送者和许多接收者(在这个方案中从不会有多个发送者)
user id name message id recipient_id content_id date_time_sent date_time_read response_to_message_id (refers to the email this one is in response to - threading) expires importance flags (read, read reply, etc) content id message_id sender_id title message
当然,还有许多其他功能可以添加,但大多数人在想到“电子邮件”时会想到上述功能。
- 亚当
答案 2 :(得分:0)
这是一个相当简单的表结构。 A到/来自主题然后是消息。现在重要的是日期字段。 DateSent告诉它何时发送,DateRead告诉消息被读取,DateDeletedTo告诉TO用户删除它,DateDeletedFROM告诉FROM用户删除它(这些是这个例子的逻辑删除)。
tblMessage
ID BIGINT
ToUserID GUID/BIGINT
FromUserID GUID/BIGINT
Subject NVARCHAR(150)
Message NVARCHAR(Max)
DateDeletedFrom DATETIME
DateDeletedTo DATETIME
DateSent DATETIME
DateRead DATETIME
答案 3 :(得分:0)
我实际上这是在工作中进行内部开发的一部分。创建一个名为[Messages]的表,并为其指定以下列。
这样的东西应该适用于桌面设计。这些类取决于你正在设计它的系统。
答案 4 :(得分:0)
Table Message:
id INTEGER
recipient_id INTEGER -- FK to users table
sender_id INTEGER -- ditto
subject VARCHAR
body TEXT
Table Thread
parent_id -- FK to message table
child_id -- FK to message table
然后,您可以通过Thread表获取消息线程。