假设我想为一个包含员工和项目的系统建模。每个员工可以是 0 到 n 个项目的一部分,一个项目可以有 0 到 n 个员工参与其中。为了对此建模,我创建了 3 个表,employee
,project
并work
具有以下关系
| employee
| (0..n) <----> (1..1) | work
| (1..1) <----> (0..n) | project
|
到目前为止一切顺利,表work
只有两个属性(来自员工条目的 id 和来自项目的 id),这很好用。
每个项目还必须有一个公共“聊天”和一个私人“聊天”。公众允许公司中的每个人查看该项目的聊天并将消息发送到该项目。另一方面,在私人项目中,只有属于该特定项目的员工才能看到和发送消息。
公共聊天很容易建模,因为每个人都可以看到消息。我的怀疑是关于私人的。我想将私人消息的条件强制输入数据库,以便私人消息与属于该特定项目的员工相关。我发现这样做的方法是id
在表中添加一个work
并将这个 id 用作private_message
表中的外键。所以这两个表之间的关系是:
| private_message
| (1..1) <----> (0..n) | work
|
这是模拟这种情况的好方法吗?如果没有,我该如何改进这个模型?
谢谢。