ASP.NET Web 应用程序

标签 asp.net database-design

我需要一些关于如何为网站开发收件箱、发送、草稿功能的提示。这是为了让用户可以相互交流。 我有 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) 可见。

因此,要检索收件箱,您可以使用类似于

的 SQL
SELECT * 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 表,该表包含一条或多条包含以下内容的记录: MessageIdToUserId 对。

关于ASP.NET Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4918999/

相关文章:

jquery 样式到 asp :button inside a repeater

c# - 使用 asp.net 一键式网站备份

mysql - 设计考勤数据库: Is it good practice to use employees as fields?

database - 为不同的数据集构建数据库设计

mysql - 具有多个聚合列的 100M/月行的方法

asp.net - View 状态标签上的结束斜杠?

asp.net - 无法更改 div 的高度。

c# - ZipArchive 返回空文件夹 C#

mysql - 将相似的数据对象合并到单个表中是否有效?

分布式应用中的数据库瓶颈