【发布时间】:2010-12-15 08:30:40
【问题描述】:
我认为最好根据一个例子来问:有人、有客户和有项目。
人与人之间的关系是 n:m 关系。人们可以为多个客户工作。
与客户的项目是一对一的关系。一个项目总是属于某个客户,但一个客户当然可以有多个活跃的项目。
人与客户是一种 n:m 关系,但受项目与客户以及人与客户分配的限制。
更多详情: 我们的一些人为多个客户工作,但只为这些客户的几个项目工作。
假设客户 A 有项目 1、2、3,客户 B 有项目 4、5、6。
现在 Fred 在项目 1 上为客户 A 工作,在项目 5 和 6 上为客户 B 工作。 相反,蒂姆在项目 2,3 上为客户 A 工作,在项目 6 上为客户 B 工作。 我们的特殊人员 Nick 只为客户 B 工作,但目前没有分配到任何项目。客户可以稍后将他分配给一个项目。
现在,我如何使用良好的关系数据库设计确保我可以在没有项目的情况下将人员分配给客户(例如 Nick),并且稍后可以将他们分配给任何客户的项目 - 仅限于那些他们被分配到。
那么我是否需要设计我的表,以便数据库模型确保在不先将 Nick 分配给客户 A 的情况下将其分配给项目 1,2 或 3?
感谢您的任何想法:)
【问题讨论】:
标签: database-design architecture relational-database cardinality