entity-framework - 可以广播消息时,消息系统如何组织数据库表?

标签 entity-framework sql-server-2008 database-design messaging

想象一个电子商务网站,用户可以在其中创建自己的商店。
我正在为此类网站设计内部消息传递系统,目前我对如何在数据库方面实现它犹豫不决。

需要支持以下场景:

  • [u => u] 用户可以向其他用户发送消息;
  • [u => s] 用户可以向商店发送消息;
  • [s => u] 商店可以向用户发送消息;
  • [s => uu]商店可以向所有顾客发送消息。

如果我只有一个简单的 Messages 表,而一家商店想要向 10,000 名用户广播一条消息,我将需要一次插入 10,000 条类似的记录。

另一种方法是将PersonalMessagesBroadcastMessages 分开,并引入BroadcastMessageReceivers“映射”表。但是,这种方法使处理单个消息变得复杂,例如删除、显示收件箱和发件箱等。

考虑到我使用的是 Entity Framework 和 MS SQL 2008,是否有推荐的选项?

最佳答案

如果您希望每个用户能够独立管理其收件箱的内容,您必须将广播消息作为一组单独的消息(或某些 M:N 关系)来处理 - 每个用户都必须有自己的记录,这样如果他删除消息来自收件箱的其他用户不会受到影响。实现取决于您想要处理广播的方式——您是否需要处理广播消息本身?然后你需要单独的实体类型。

如果你想使用 Entity 框架,请确保你有用于广播的存储过程。存储过程将获取消息、发件人和商店,并为所有目标用户创建记录。直接通过 EF 执行此操作会非常慢。

关于entity-framework - 可以广播消息时,消息系统如何组织数据库表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6135881/

相关文章:

MySQL 数据库设计问题

c# - 设置 Visual Studio Server Explorer 以使用 postgresql

sql - 与所有列进行比较

SQL Server 查询需要 3 分 40 秒。如何改善执行时间?

mysql - 数据库设计两种具有不同交货时间的产品

database - 标签系统中标签的 ID

sql - 用于监控应用程序功能状态的数据库设计

c# - 影响迁移历史位置的 Entity Framework 自动迁移

c# - Linq2Sql Many :Many question, 你会怎么做?

sql - Access IIF 到 SQL 语句转换