기술적으로는, 당신이 묘사하는 것은 일대 관계가 아니라 대신은 한 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
지정했습니다.
환호하는 사람, 완벽하게 작동합니다. – user3074612
안녕하세요. 행운을 빈다. –