Heim >Datenbank >MySQL-Tutorial >Wie definiere ich Fremdschlüssel, die auf mehrspaltige Primärschlüssel in MySQL verweisen?

Wie definiere ich Fremdschlüssel, die auf mehrspaltige Primärschlüssel in MySQL verweisen?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 01:32:131053Durchsuche

How to Define Foreign Keys Referencing Multi-Column Primary Keys in MySQL?

Fremdschlüssel für mehrspaltige Primärschlüssel in MySQL verstehen

Beim Erstellen von Beziehungen zwischen Tabellen in einer relationalen Datenbank ist es wichtig zu verstehen, wie Fremdschlüssel zu etablieren. In MySQL besteht ein häufiges Szenario darin, eine Tabelle mit einer anderen Tabelle mit einem mehrspaltigen Primärschlüssel zu verknüpfen.

Stellen Sie sich eine Tabelle mit dem Namen „ProductAttribute“ vor, die zwei Primärschlüsselspalten hat: „product_id“ und „attribute_id“. Sie möchten eine weitere Tabelle, ProductDetails, erstellen, die auf die ProductAttribute-Tabelle verweist.

Um in ProductDetails einen Fremdschlüssel einzurichten, der mit der ProductAttribute-Tabelle verknüpft ist, können Sie die folgende Syntax verwenden:

CREATE TABLE ProductDetails (
  [COLUMN DEFINITIONS]
  product_id INT NOT NULL,
  attribute_id INT NOT NULL,
  CONSTRAINT fk_product_details_product_attribute
    FOREIGN KEY (product_id, attribute_id)
    REFERENCES ProductAttribute(product_id, attribute_id)
) ENGINE=InnoDB;

Wichtige Überlegungen:

  • Indizierung: MySQL erfordert die Indizierung von Fremdschlüsselreferenzen. Im obigen Beispiel erstellt die Einschränkung fk_product_details_product_attribute einen Index für die Spalten „product_id“ und „Attribute_id“ in der Tabelle „ProductDetails“.
  • Einschränkungssyntax: Mit der CONSTRAINT-Klausel können Sie die Fremdschlüsseleinschränkung benennen. Dies vereinfacht die spätere Referenzierung oder Änderung bei Bedarf.
  • InnoDB-Erzwingung: InnoDB ist eine Speicher-Engine in MySQL, die Fremdschlüsseleinschränkungen erzwingt. MyISAM, eine andere Speicher-Engine, ignoriert Fremdschlüsseleinschränkungen. Daher ist es für die Durchsetzung der Datenintegrität von entscheidender Bedeutung, sicherzustellen, dass Ihre Tabellen InnoDB verwenden.

Das obige ist der detaillierte Inhalt vonWie definiere ich Fremdschlüssel, die auf mehrspaltige Primärschlüssel in MySQL verweisen?. 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