如何在sqlServer中创建一个复杂的表?
问题描述:
假设我有一张名为Employees的表格,每个员工都有一个名为(E_ID) 的主关键字,并且我有另一个称为位置的表格,并且每个位置都有一个名为(P_ID) 的主关键字,而且我还有另一个称为“并且每个办公室都有一个ID(O_ID)如何在sqlServer中创建一个复杂的表?
现在我想创建一个包含三个主键(E_ID)和(P_ID)和(O_ID)的表......这三个值必须从前三张桌子,但我无论如何都做不到呢? 请帮助我,因为我非常需要 非常感谢
答
如果是我,我想我只是将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));
分享和享受。
你使用什么数据库引擎? MS SQL Server?甲骨文? MySQL的? .... – 2010-10-31 14:08:48