Suche…


Bemerkungen

  • Keine AUTO_INCREMENT ID für diese Tabelle vorhanden - Die angegebene PK ist die "natürliche" PK; Es gibt keinen guten Grund für einen Ersatz.
  • MEDIUMINT - Dies ist eine Erinnerung daran, dass alle INTs so klein wie möglich gemacht werden sollten (kleiner ⇒ schneller). Natürlich muss die Deklaration hier mit der Definition in der Tabelle übereinstimmen, mit der verlinkt wird.
  • UNSIGNED - Nahezu alle INTs können auch als nicht negativ deklariert werden
  • NOT NULL - Das stimmt, nicht wahr?
  • InnoDB - Effizienter als MyISAM aufgrund der Art und Weise, wie der PRIMARY KEY mit den Daten in InnoDB gebündelt wird.
  • INDEX(y_id, x_id) - Der PRIMARY KEY macht es effizient, in eine Richtung zu gehen; das macht die andere Richtung effizient. Keine Notwendigkeit, UNIQUE zu sagen; das wäre ein zusätzlicher Aufwand für INSERTs .
  • Im Sekundärindex würde nur die INDEX(y_id) funktionieren, da dies implizit die x_id von x_id . Ich möchte jedoch eher deutlich machen, dass ich auf einen "abdeckenden" Index hoffe.

Sie können der Tabelle weitere Spalten hinzufügen. das ist selten. Die zusätzlichen Spalten können Informationen über die Beziehung enthalten , die die Tabelle darstellt.

Möglicherweise möchten Sie FOREIGN KEY Einschränkungen hinzufügen.

Typisches 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;

(Siehe Anmerkungen unten, für Gründe.)



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow