2011-07-03 63 views
1

我想創建一個外鍵在兩個不同的表中的兩個值,一些指針將不勝感激!指定一個複合外鍵

下面是我使用這個代碼:

CREATE TABLE [dbo].[EmployeeUnsetZone](
    [EmployeeID] [char](2) NULL, 
    [ZoneOfficeID] [int] NOT NULL, 
    [ZoneID] [char](4) NULL 
    CONSTRAINT EmployeeUnsetZone_EmployeeFK FOREIGN KEY([EmployeeID],[ZoneID]) 
    REFERENCES [Employee]([ID]), [ZoneByOffice]([ID]) 
) 
+1

爲什麼兩列需要外鍵可空?爲什麼沒有爲表格定義主鍵?桌子的商業規則是什麼? –

+0

此表用於存儲員工「取消」特定「區域」的權限。不知道爲什麼這些列可以爲空,必須是大腦放屁,但我現在已經讓它們不爲NULL。 我不認爲我需要一個像這樣的規則表的主鍵,即使在那裏有一個重複的snuck,也不會造成破壞。 – CodeMinion

回答

1

我會使用:

CREATE TABLE [dbo].[EmployeeUnsetZone](
    [EmployeeID] [char](2) NULL, 
    [ZoneOfficeID] [int] NOT NULL, 
    [ZoneID] [char](4) NULL, 
    PRIMARY KEY ([EmployeeID], [ZoneID]), 
    CONSTRAINT fk_employeeid FOREIGN KEY([EmployeeID]) REFERENCES [Employee]([ID]), 
    CONSTRAINT fk_zoneid FOREIGN KEY([ZoneID]) REFERENCES [ZoneByOffice]([ID]) 
) 

主鍵將停止複製,並且還設置了兩列聚集鍵使搜索更好。

+0

謝謝bru!我今天學到了東西! – CodeMinion