수색…


비고

  • 이 테이블에 대한 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