我需要一些关于如何为网站开发收件箱、发送、草稿功能的提示。这是为了让用户可以相互交流。 我有 3 个表:收件箱、已发送、草稿。 因此每个表都会分别填充。
我应该为此准备总共 4 张 table 吗? Message_Inbox,收件箱,草稿,已发送。 如果用户单击收件箱或已发送链接,则收件箱或已发送表以及从 Message_Inbox 数据库表中获取的适当内容应显示在右侧。从 message_Inbox 表中获取的内容可能是什么,
我是asp.net的初学者。所以我的问题可能很天真。我也会做我的研究
感谢您的帮助
最佳答案
这更多地与数据库设计有关,而不是专门针对 ASP.NET,因为您使用的数据库结构可以用于 Windows 窗体应用程序、silverlight 应用程序或任何其他东西!
我的方法是创建一个名为“Message”的表,其结构如下:
MessageId INT NOT NULL IDENTITY
FromUserId INT NOT NULL (FK to User Table)
ToUserId INT NOT NULL (FK to User Table)
IsDraft TINYINT
Title NVARCHAR(...)
MessageBody NVARCHAR(...)
通过这种方式,您可以将所有邮件存储在一个表中,因为唯一的区别是它们是否是草稿,即它们是否对预期收件人 (ToUserId
) 可见。
因此,要检索收件箱,您可以使用类似于
的 SQLSELECT * FROM Message WHERE ToUserId=@UserIdWhoseInboxImRetrieving WHERE IsDraft=0`
检索某人的草稿消息,例如
SELECT * FROM Message WHERE FromUserId=@UserIdWhoseDraftsImRetrieving WHERE IsDraft=1
用户通过
发送了元素SELECT * FROM Message WHERE FromUserId=@UserIdWhoseSentItemsImRetrieving WHERE IsDraft=0
如果您想迁移到“多收件人”模型,您可以轻松地将 ToUserId
列替换为 Message_Recipient
表,该表包含一条或多条包含以下内容的记录: MessageId
和 ToUserId
对。
关于ASP.NET Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4918999/