我正在设计一个数据库来处理具有以下关系和约束的用户、帐户和项目:
- 一个帐户有很多用户
- 一个用户属于多个账户
- 一个账户有很多项目
- 一个项目只属于一个账户
- 用户在许多项目中进行协作(冗余说明:每个项目都属于自己的帐户)。
换句话说,一个用户可以在同一个帐户的多个项目中进行协作。但是由于一个用户可以属于多个账户,因此一个用户可以在多个账户的多个项目中进行协作。这使我建立了三元合作关系:
在阅读了几篇关于将三元关系转换为二元关系的论文后,我提出了以下等价关系:
这里出现两个问题:
这种转换正确吗?我发现我必须在应用程序级别添加额外的检查来处理插入。例如,在添加新用户之前,
(User,Project)
我必须检查用户是否属于项目所属的同一帐户。真的有必要建立 和 之间的关系
Account
吗User
?User
加上和之间的关系Project
后,我们不能通过访问项目知道用户所属的帐户吗?
谢谢!!