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