2014-01-27 2 views
1

MySQL에서는 테이블에서 2 개의 외래 키를 결합하여 기본 키가되는 방법은 무엇입니까?외래 키 결합

하나의 테이블이 Staff이고 하나가 Roles이고 하나가 각각 고유 기본 키 StaffIDRoleID을 포함하고 있습니다. StaffRole이라는 세 번째 테이블을 만들었습니다. StaffIDRoleID이 포함되어 있습니다. 직원이 1 개 이상의 역할을 가질 수 있으므로 일대 다 관계라는 것을 명심하십시오.

StaffIDRoleID의 외래 키를 조합하여 StaffRole 테이블의 새 고유 기본 키를 만드는 방법은 무엇입니까?

답변

1

기술적으로는, 당신이 묘사하는 것은 일대 관계가 아니라 대신은 Staff 기록이 많은 Role 기록에 관련이 있기 때문에 관계는 many-to-many, 그러나 1 Role 기록도 많은 다른 Staff과 관련이 있습니다. 관계 테이블을 처리하는 일반적인 방법은 조인 테이블 StaffRole을 사용하는 것입니다.

이것은 의미론이지만 두 개의 외래 키를 결합하는 것이 아니므로 두 키와 기본 키의 합성 인 세 번째 키를 만드는 것과 마찬가지입니다. 따라서 테이블에는 두 개의 열에 각각 하나씩 두 개의 FOREIGN KEY 정의가 있고, 에 두 개의 열이 모두 에 해당하는 하나의 복합체 PRIMARY KEY 정의가 있습니다. MySQL은 MyISAM 테이블에 FOREIGN KEY의를 적용하지 때문에

CREATE TABLE StaffRole (
    StaffID INT NOT NULL, 
    RoleID INT NOT NULL, 
    /* Composite primary key on both columns */ 
    PRIMARY KEY (StaffID, RoleID), 
    /* Two separate foreign keys */ 
    FOREIGN KEY (StaffID) REFERENCES Staff (StaffID), 
    FOREIGN KEY (RoleID) REFERENCES Roles (RoleID) 
) ENGINE=InnoDB; 

참고, 나는 테이블 형식으로 InnoDB 지정했습니다.

+0

환호하는 사람, 완벽하게 작동합니다. – user3074612

+0

안녕하세요. 행운을 빈다. –

-1

기본 키로 StaffRoleID를 만들고 외래 키로 StaffID 및 RoleID를 사용할 수 있습니다.