我试图围绕将Employees
连接到Projects
的正确方法,但由于某种原因,我很难解决这个问题。到目前为止,我有以下内容:
-------------------
| Employee |
-------------------
| EmployeeID | PK |
-------------------
| Name | |
-------------------
| Position | |
-------------------
--------------------
| Project |
--------------------
| ProjectID | PK |
--------------------
| Name | |
--------------------
| Description | |
--------------------
我将拥有许多Employees
和许多Projects
,每个员工都可以成为许多项目的一部分,而每个项目都会有许多员工加入其中。我遇到了如何在两者之间建立连接的问题。有人可以通过这个来帮助我吗?谢谢!
答案 0 :(得分:2)
您需要一个连接表来创建两个一对多关系:
employee
employee_id PK
相关:
employee_project
employee_id PK
project_id PK
项目也与上述有关:
project
project_id PK
因此,您的员工可以与employee_project表相关,但您的项目也可以与employee_project表相关。
在表上有两个主键称为Composite Primary Key(在这种情况下是两个外键)。
答案 1 :(得分:1)
创建一个多对多关系表。就像这样。
--------------------------
| EmployeeProject |
--------------------------
| EmployeeID | PK |
-------------------
| ProjectID | PK |
--------------------------
此表上的PK是EmployeeID + ProjectID
的组合(称为复合主键)。
要获得拥有项目的员工,您的SQL将如此。
SELECT emp.*
FROM Employee emp
INNER JOIN Project prj ON emp.EmployeeID = prj.EmployeeID
如果您想获得*没有分配任何项目*的员工,您的SQL将如此。
SELECT emp.*
FROM Employee emp
LEFT JOIN Project prj ON emp.EmployeeID = prj.EmployeeID
WHERE prj,EmployeeID IS NULL
答案 2 :(得分:0)
您需要一个中间表,您将EmployeeID和ProjectID存储为外键,从而建立两者之间的连接。 (M:N关系)
答案 3 :(得分:0)
创建第三个表并在该表中存储EmployeeID和ProjectID,现在您可以查询所需的任何内容。
答案 4 :(得分:0)
要做到这一点,你需要一个包含EmployeeID和ProjectID的第三个表。将两个ID标记为主键。如果您想要选择它们,则必须进行双重连接,但这是处理它的最佳方式。