如何在sqlServer中创建一个复杂的表?

问题描述:

假设我有一张名为Employees的表格,每个员工都有一个名为(E_ID) 的主关键字,并且我有另一个称为位置的表格,并且每个位置都有一个名为(P_ID) 的主关键字,而且我还有另一个称为“并且每个办公室都有一个ID(O_ID)如何在sqlServer中创建一个复杂的表?

现在我想创建一个包含三个主键(E_ID)和(P_ID)和(O_ID)的表......这三个值必须从前三张桌子,但我无论如何都做不到呢? 请帮助我,因为我非常需要 非常感谢

+0

你使用什么数据库引擎? MS SQL Server?甲骨文? MySQL的? .... – 2010-10-31 14:08:48

如果是我,我想我只是将P_ID和O_ID添加到Employees。相同的职位可能由多名员工填补,并且在给定Office中可能有多个员工,但不太可能(不使用克隆技术)同一员工需要多次重复 - 因此,只需将P_ID和O_ID添加到员工和我认为你很好去。当然,您需要从员工到职位(P_ID)和办公室(O_ID)的外键约束。

编辑:经过一番思考,回想起我已经有了填补多个职位(尽管在同一地点)的工作,我想可以设想一个人可能会填写多个职位,可能在不同的地点。

如果您确实在Employees,Positions和Offices之间建立了联结表,那么创建一个名为EmployeePositionOffice(或类似的东西)的表,其中包含三列E_ID,P_ID和O_ID。主键应该是(E_ID,P_ID,O_ID),并且每个字段都应该对相关基表进行外键处理。

编辑: 不能确定SQL Server语法,但在甲骨文第一会是这样的:

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)); 

分享和享受。

+0

请你给我看一个简单的代码来做到这一点 – Mouayad 2010-10-31 14:55:39

+0

因为我试图以类似的方式做,但我失败 – Mouayad 2010-10-31 14:55:55

+0

我起诉SQL Server 2008 – Mouayad 2010-10-31 15:54:41