首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为两个不同实体之间的复杂消息传递系统设计表?

如何为两个不同实体之间的复杂消息传递系统设计表?
EN

Stack Overflow用户
提问于 2019-08-26 23:27:50
回答 1查看 217关注 0票数 0

我正在开发一个包含消息传递系统的web应用程序。web应用程序有一个基本实体(用户),用户可以在应用程序中拥有另一个实体(公司),每个公司可能有多个用户(将其视为一个团队的员工)。用户可能不一定与公司有关系。公司必须与至少一个用户有关系。

我试图在应用程序中创建一个消息传递系统(更多的是应用程序内部的电子邮件系统,而不是聊天系统)。但是,消息传递系统对允许谁向谁发送消息有一定的限制:

  • 用户可以向公司发送消息。
  • 公司可以向用户发送信息。
  • 公司可以向公司发送信息。

我们将为用户和公司提供两个不同的收件箱/发件箱。意思是在仪表板内,如果用户拥有一家公司,他将有一个页面到他自己的用户收件箱,一个页面给他的公司收件箱。

我的问题是确定发送方和接收方的实体,我似乎无法为messages表找到一个良好的可维护表设计。下面是users表、companies表和company_users表的结构:

我想到的设计(在实现之后,我不认为这是最好的设计)是为每一行设置一个sender_user_id字段和一个sender_company_id字段。如果sender_user_id为null,则设置sender_company_id。这意味着该消息的发送方是一个公司,反之亦然。对接受者来说也是一样。下面是messages表的设计

有人想要更好的设计吗?更容易维护的东西?这是目前后台的关系地狱。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-08-27 02:48:59

以微软ExchangeServer及其单一实例存储为例,我认为您缺少的是指针。

如果您的用例被缠绕回单个发件人,则可以向单个接收方发送一条消息,那么我认为您的模式将几乎完全正确。

如果你想让一个人(例如公司管理部门)能够向公司的所有成员发送信息,那么你实际上要说的是:

“我希望公司管理部门向公司的所有现任成员发送指向该信息的指示”。

我的意思是,当他们发送消息时,他们实际上是在为原始消息创建message_pointers。这样,当收件人删除“消息”时,他们实际上所做的就是删除对该消息的单独引用。

这有用吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57666011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档