如何解析这些 SQL 表

How to resolve these SQL tables

好的,所以 - 我有 3 张桌子。 项目 组织 联系人

我这辈子都想不出如何解决他们之间的关系。 以下是业务规则:

作为组织的一部分,需要能够为两个项目分配联系人 需要能够将组织分配给项目 我已经尝试了所有我能想到的解决那里的多对多关系但无法找到使它全部工作的方法...... 在此先感谢您的帮助!

按照以下方式映射这些关系似乎相当简单;

一个员工可以是一个组织的一部分。

一个组织可以有很多员工

This can be handled by having an OrganizationId on the Employee table.

一个员工可以是多个项目的联系人

一个项目可以雇佣很多组织

一个项目可以有很多员工(每个组织一个联系人)

可以雇用一个组织来处理多个项目

This seems to be handled by having a (some would call bridge table) ProjectResource table, which has a ProjectId and ContactId field. (This could also have OrganizationId, depending on how you are using the database, but to be more normalized, since it can be implied by the Contact, it is not needed)

只要你的两个特定 table 之间的关系是多对多的,你可能需要有一个单独的 table(通常也称为桥 table)来表示这种关系。

所以你需要这些 table:

  • 组织(有项目外键,有联系人外键)
  • 员工(有项目外键)
  • 项目(有组织外键,有 contact/employee 外键[见联系人])
  • 联系人(这个table可能需要也可能不需要,这取决于一个项目是否可以有多个联系人。如果不需要,你可以用员工替换所有联系人外键)
  • 组织和项目之间的桥梁 Table(同时具有组织和项目外键)

我可能漏掉了什么,但我想你明白了。你只需要画一个erd就可以清楚地确定所有这些关系。