0
내가 다음 표 (난 정말이 그냥 예를 들어하지 않음)이 말 :MySQL 합성 고유 키는 두 개의 외래 키 필드가 같은 열을 참조하여 어떻게 작동합니까?
CREATE TABLE PERSON(
ID BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
);
CREATE TABLE FRIENDSHIP(
ID BIGINT NOT NULL AUTO_INCREMENT,
PERSON_ID_A BIGINT NOT NULL,
PERSON_ID_B BIGINT NOT NULL,
PRIMARY KEY(ID),
FOREIGN KEY(PERSON_ID_A) REFERENCES PERSON(ID),
FOREIGN KEY(PERSON_ID_B) REFERENCES PERSON(ID)
);
사람 테이블 명을 나타냅니다, 그리고 우정 테이블은 사람들 사이의 우정을 나타냅니다.
내 첫 반응은 우정 테이블에 다음을 추가하는 것입니다, 그래서 하나의 우정 기록,이 독특한 사람들 사이에 존재 할 수 있도록 싶습니다
UNIQUE KEY(PERSON_ID_A, PERSON_ID_B)
것은 내가 생각 그러나이 여전히 수 있음을
INSERT INTO FRIENDSHIP(PERSON_ID_A, PERSON_ID_B) VALUES (1, 2);
INSERT INTO FRIENDSHIP(PERSON_ID_A, PERSON_ID_B) VALUES (2, 1);
위의 단일 고유 키로 인해이 삽입 쌍이 성공적으로 적용되지 않습니까? 그렇지 않은 경우 합성 고유 키의 특수 변형을 사용하여 해당 키를 막을 수 있습니까? 아니면 트리거에서이 키를 처리해야합니까? 단일 고유 키가 위의 삽입을 방지하는 경우 어떻게 허용 할 수 있습니까?
이것은 결코 생각조차하지 않은 멋진 아이디어입니다! – Numeron