Heim >Datenbank >MySQL-Tutorial >Wie referenziere ich einen zweispaltigen Primärschlüssel mit Fremdschlüsseln in MySQL?

Wie referenziere ich einen zweispaltigen Primärschlüssel mit Fremdschlüsseln in MySQL?

Susan Sarandon
Susan SarandonOriginal
2024-12-20 07:17:10871Durchsuche

How to Reference a Two-Column Primary Key with Foreign Keys in MySQL?

Referenzieren eines zweispaltigen Primärschlüssels in MySQL mit Fremdschlüsseln

Beim Entwerfen relationaler Datenbanktabellen kommt es häufig vor, dass mehrere Spalten vorhanden sind bilden den Primärschlüssel einer Tabelle, und eine andere Tabelle muss darauf verweisen. In MySQL erfordert das Erstellen eines Fremdschlüssels zur Verknüpfung mit einem solchen zusammengesetzten Primärschlüssel einige spezifische Überlegungen.

Um einen Fremdschlüssel in einer anderen Tabelle einzurichten, der auf den zweispaltigen Primärschlüssel (product_id, attribute_id) verweist:

CREATE TABLE MyReferencingTable (
    [COLUMN DEFINITIONS]
    refcol1 INT NOT NULL,
    refcol2 INT NOT NULL,
    CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
    REFERENCES OtherTable(product_id, attribute_id)
) ENGINE=InnoDB;

Diese Syntax bestimmt mehrere wichtige Punkte:

  • Indizierung Referenzierung Spalten: MySQL erfordert die Indizierung von Fremdschlüsselspalten, daher müssen die referenzierenden Spalten (refcol1, refcol2) Indizes haben.
  • Verwenden der Constraint-Syntax: Mit der CONSTRAINT-Syntax können Sie Namen angeben die Einschränkung, was die spätere Verwaltung und Bearbeitung bei Bedarf erleichtert.
  • Mit InnoDB Engine: InnoDB setzt Fremdschlüssel strikt durch und gewährleistet so die Datenintegrität. MyISAM hingegen analysiert die Fremdschlüsseleinschränkungen, ignoriert sie aber letztlich.

Das obige ist der detaillierte Inhalt vonWie referenziere ich einen zweispaltigen Primärschlüssel mit Fremdschlüsseln in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn