假设我有一个名为Employees的表,每个员工都有一个名为(E_ID)的主键 我有另一个名为Positions的表,每个Position都有一个名为(P_ID)的主键 我还有另一个名为office的表,每个办公室都有一个名为(O_ID)的ID
现在我要创建一个包含三个primaryKeys的表:(E_ID)和(P_ID)和(O_ID)... 当然,这三个值必须从前三个表中退出,但我还是无法做到这一点? 请帮助我,因为我很糟糕 非常感谢
答案 0 :(得分:0)
如果是我,我想我只是向员工添加P_ID和O_ID。多个员工可以填写相同的职位,并且在给定的办公室中可能有多个员工,但是不太可能(不使用克隆技术)需要多次复制相同的员工 - 因此,只需添加P_ID和O_ID即可员工和我认为你很高兴。当然,您需要从Employee到Position(P_ID)和Office(O_ID)的外键约束。
编辑:经过一番思考,并回忆起我已经在我填补了多个职位的工作(尽管在同一地点),我想可以想象一个人可能已经填满了可能位于不同位置的多个职位。如果您确实在Employees,Positions和Offices之间设置了联结表 - 那么,创建一个名为EmployeePositionOffice(或类似的东西)的表,其中包含三列E_ID,P_ID和O_ID。主键应该是(E_ID,P_ID,O_ID),并且每个字段应该是外键到相关的基表。
编辑: 不确定SQL Server语法,但在Oracle中,第一个类似于:
ALTER TABLE EMPLOYEES
ADD (P_ID NUMBER REFERENCES POSITIONS(P_ID),
O_ID NUMBER REFERENCES OFFICES(O_ID));
而第二个就像是
CREATE TABLE EMPLOYEES_POSISTIONS_OFFICES
(E_ID NUMBER REFERENCES EMPLOYEES(E_ID),
P_ID NUMBER REFERENCES POSITIONS(P_ID),
O_ID NUMBER REFERENCES OFFICES(O_ID),
PRIMARY KEY (E_ID, P_ID, O_ID));
分享并享受。