MySQL
다 대다 매핑 테이블
수색…
비고
- 이 테이블에 대한
AUTO_INCREMENT
id의 부족 - 주어진 PK는 '자연적'PK입니다. 대리인에 대한 정당한 이유가 없습니다. -
MEDIUMINT
- 이것은 모든INTs
가 안전한만큼 작게 만들어 져야한다는 것을 상기시키는 것입니다 (더 작은 ⇒ 더 빠름). 물론 여기에있는 선언은 연결될 테이블의 정의와 일치해야합니다. -
UNSIGNED
- 거의 모든 INT가 음수가 아닌 것으로 선언 될 수 있습니다. -
NOT NULL
- 그건 사실입니다, 안 그래요? -
InnoDB
-InnoDB
의 데이터로PRIMARY KEY
가 클러스터되는 방식 때문에 MyISAM보다 효과적입니다. -
INDEX(y_id, x_id)
-PRIMARY KEY
사용하면 한 방향으로 효율적으로 이동할 수 있습니다. 다른 방향을 효율적으로 만든다.UNIQUE
라고 말할 필요가 없습니다. 그것은INSERTs
에 대한 추가 노력입니다. - 보조 인덱스에서
INDEX(y_id)
는 암시적인x_id
포함하기 때문에 작동합니다. 그러나 나는 오히려 내가 '덮음'지수를 기대하고 있음을 분명히 밝힐 것이다.
표에 열을 더 추가 할 수 있습니다 . 이것은 드물다. 여분의 열은 테이블이 나타내는 관계에 대한 정보를 제공 할 수 있습니다.
FOREIGN KEY
제약 조건을 추가 할 수 있습니다 .
일반적인 스키마
CREATE TABLE XtoY (
# No surrogate id for this table
x_id MEDIUMINT UNSIGNED NOT NULL, -- For JOINing to one table
y_id MEDIUMINT UNSIGNED NOT NULL, -- For JOINing to the other table
# Include other fields specific to the 'relation'
PRIMARY KEY(x_id, y_id), -- When starting with X
INDEX (y_id, x_id) -- When starting with Y
) ENGINE=InnoDB;
(이론적 근거는 아래 비고 참조).
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow