【发布时间】:2019-08-26 23:27:50
【问题描述】:
我正在开发一个包含消息传递系统的 Web 应用程序。 Web 应用程序有一个基本实体(用户),用户可以在应用程序中拥有另一个实体(公司),每个公司可能有多个用户(将其视为团队的员工)。用户可能不一定与公司有关系。公司必须与至少一个用户有关系。
我正在尝试在应用程序内创建一个消息传递系统(更多的是应用程序内电子邮件系统而不是聊天)系统。但是,消息系统对谁可以向谁发送消息有一定的限制:
- 用户可以向公司发送消息
- 公司可以向用户发送消息
- 公司可以向公司发送消息
我们将为用户和公司提供两个不同的收件箱/发件箱。这意味着在仪表板中,如果用户拥有一家公司,他将拥有一个指向他自己的用户收件箱的页面,以及一个用于他公司收件箱的页面。
我的问题是确定发送者和接收者的实体,我似乎无法为消息表找到一个好的可维护表设计。 下面是 users 表、companys 表和 company_users 表的结构:
我想到的设计(实施后我认为这不是最好的设计)是每行都有一个sender_user_id 字段和一个sender_company_id 字段。如果sender_user_id 为空,而sender_company_id 已设置。这意味着此消息的发件人是一家公司,反之亦然。接收器也是如此。下面是messages表的设计
有没有人想到更好的设计?也许更可维护的东西?这目前是后端的关系地狱。谢谢。
【问题讨论】:
-
所以用户不能向用户发送消息?
标签: mysql database database-design orm relational-database