一千萬個為什麽

搜索

如何在sqlServer中創建復雜表?

假設我有一個名為Employees的表,每個員工都有一個名為(E_ID)的主鍵 我有另一個名為Positions的表,每個Position都有一個名為(P_ID)的主鍵 我還有一個名為office的表,每個辦公室都有一個名為(O_ID)的ID

現在我想創建一個有三個primaryKeys的表,它們是(E_ID)和(P_ID)和(O_ID)...... 當然,這三個值必須從前三個表中退出,但我還是不能這樣做? 請幫助我,因為我很糟糕 非常感謝

最佳答案

如果是我,我想我只是向員工添加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));

分享和享受。

轉載註明原文: 如何在sqlServer中創建復雜表?