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

외래 키가 필요한 두 개의 열이 null 인 이유는 무엇입니까? 테이블에 정의 된 기본 키가없는 이유는 무엇입니까? 테이블에 대한 비즈니스 규칙은 무엇입니까? –

+0

이 테이블은 특정 '구역'의 '설정 해제'에 대한 직원의 권리를 저장하기위한 것입니다. 왜 그 열이 nullable인지, 뇌의 방귀가되어야하는지는 모르겠지만, 지금은 NULL이 아니게되었습니다. 나는이 같은 규칙 테이블에 대해 기본 키가 필요 없다고 생각합니다. 복제 된 스낵이 있어도 아무런 피해도 없습니다. – 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