我觉得最好举个例子来问:有人、有客户、有项目。
人与客户是一种:m 关系。人们可以为多个客户工作。
对客户的项目是 1:n 的关系。一个项目总是属于某个客户,但一个客户当然可以有多个活动项目。
人对客户是一种:m 关系,但受项目对客户和人对客户分配的限制。
更多细节:我们的一些人为多个客户工作,但只为这些客户的几个项目工作。
假设客户 A 有项目 1、2、3,客户 B 有项目 4、5、6。
现在 Fred 在项目 1 上为客户 A 工作,在项目 5 和 6 上为客户 B 工作。相反,Tim 在项目 2,3 上为客户 A 工作,在项目 6 上为客户 B 工作。我们的特殊人员 Nick 只为客户 B 工作,但目前未分配给任何项目。客户可以稍后将他分配给一个项目。
现在,我如何确保使用良好的关系数据库设计,我可以在没有项目的情况下将人员分配给客户(如 Nick),并且稍后可以将他们分配给任何客户的项目 - 仅限于他们被分配的项目到。
那么我是否需要设计我的表,以便数据库模型确保在不先将 Nick 分配给客户 A 的情况下将其分配给项目 1,2 或 3 是不可能的?
感谢您的任何想法:)