Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es einen Vorteil, einen automatisch inkrementierenden Primärschlüssel in einer MySQL-Pivot-Tabelle zu haben?

Posts und Kategorien ist wahrscheinlich Many-to-Many, nicht One-to-Many.

Eine Viele-zu-Viele-Beziehungstabelle wird am besten so erstellt wie

CREATE TABLE a_b (
a_id ... NOT NULL,
b_id ... NOT NULL,
PRIMARY KEY (a_id, b_id),
INDEX(b_id, a_id) -- include this if you need to go both directions
) ENGINE = InnoDB;

Damit erhalten Sie automatisch "geclusterte" Lookups in beide Richtungen und vermeiden die unnötige künstliche ID für die Tabelle.

(Übrigens, NB, ein impliziter PK ist 6 Bytes, nicht 8. Es gibt einen langen Beitrag von Jeremy Cole zu diesem Thema.)

Eine 1:n-Beziehung benötigt diese zusätzliche Tabelle nicht. Verwenden Sie stattdessen eine ID in der anderen Tabelle. Beispielsweise enthält eine City-Tabelle die ID für das Land.