2011-07-03 36 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