Zoeken…


Opmerkingen

  • Gebrek aan een AUTO_INCREMENT id voor deze tabel - De gegeven PK is de 'natuurlijke' PK; er is geen goede reden voor een surrogaat.
  • MEDIUMINT - Dit is een herinnering dat alle INTs 's zo klein moeten worden gemaakt als veilig is (kleiner ⇒ sneller). Natuurlijk moet de verklaring hier overeenkomen met de definitie in de tabel waaraan wordt gekoppeld.
  • UNSIGNED - Bijna alle INT's kunnen net zo goed niet-negatief worden verklaard
  • NOT NULL - Nou, dat klopt toch?
  • InnoDB - Efficiënter dan MyISAM vanwege de manier waarop de PRIMARY KEY is geclusterd met de gegevens in InnoDB.
  • INDEX(y_id, x_id) - De PRIMARY KEY maakt het efficiënt om één richting op te gaan; het maakt de andere richting efficiënt. Het is niet nodig om UNIQUE te zeggen; dat zou extra inspanning voor INSERTs .
  • In de secundaire index zou alleen INDEX(y_id) zeggen werken omdat dit impliciet x_id zou omvatten. Maar ik maak liever duidelijker dat ik hoop op een 'dekkende' index.

Misschien wilt u meer kolommen toe te voegen aan de tafel; dit is zeldzaam. De extra kolommen kunnen informatie geven over de relatie die de tabel vertegenwoordigt.

Misschien wilt u toevoegen FOREIGN KEY beperkingen.

Typisch schema

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;

(Zie opmerkingen hieronder).



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow