Heim  >  Artikel  >  Datenbank  >  Zusammenfassung der Wissenspunkte zu MySQL-Fremdschlüsseleinschränkungen

Zusammenfassung der Wissenspunkte zu MySQL-Fremdschlüsseleinschränkungen

WBOY
WBOYnach vorne
2022-07-12 17:05:272085Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über MySQL, das hauptsächlich Probleme im Zusammenhang mit Fremdschlüsseleinschränkungen (Foreign Key) durch eine Spalte zwischen zwei Datentabellen in der Datenbank organisiert in der Regel durch Felder verursacht, die in tatsächlichen Szenarien genau die gleiche Bedeutung haben. Schauen wir sie uns gemeinsam an. Ich hoffe, dass es für alle hilfreich ist.

Zusammenfassung der Wissenspunkte zu MySQL-Fremdschlüsseleinschränkungen

Empfohlenes Lernen: MySQL-Video-Tutorial

1. Die Rolle von MySQL-Fremdschlüsseleinschränkungen

Fremdschlüsseleinschränkungen (Foreign Key) sind eine Beziehung, die durch eine Spalte zwischen zwei Datentabellen in der Datenbank hergestellt wird. Dieser Zusammenhang wird in der Regel durch Felder verursacht, die in tatsächlichen Szenarien genau die gleiche Bedeutung haben. Durch die Einführung von Fremdschlüsseleinschränkungen kann MySQL die Datenintegrität in der Datentabelle stärken und konsistenter mit der Anzeigesituation machen. Im Folgenden gebe ich ein Beispiel, um die Rolle von MySQL-Fremdschlüsseleinschränkungen zu veranschaulichen.
Wenn wir eine Datenbank für das Leistungsmanagementsystem für Universitätsstudenten erstellen, gibt es zwei Tabellen, die Studententabelle, in der die Studentennummer, der Name, das Geschlecht, die Abteilung und andere Informationen gespeichert sind, und die andere Tabelle ist die Notentabelle , das Informationen wie Studentenausweisnummer, Kursnummer, Testergebnisse usw. speichert. Auf diese Weise wird eine Fremdschlüsselbeschränkung zwischen den beiden Tabellen durch die Studentennummer hergestellt. Es ist für uns selbstverständlich zu glauben, dass die Studenten-ID-Nummer in der Zeugnistabelle von der Existenz der Studenten-ID-Nummer in der Studententabelle abhängt. Wenn ein Student seinen Abschluss macht oder sein Studium abbricht und aus der Studententabelle gelöscht wird, dann gilt dies auch für ihn Noten sind in der Zeugnistabelle nicht erforderlich. Bevor eine Fremdschlüsselbeziehung erstellt wird, existieren diese beiden Tabellen völlig unabhängig voneinander. Wir können eine zugehörige Punktzahl eines nicht vorhandenen Schülers zwangsweise in die Punktetabelle einfügen oder einen Schüler in der Schülertabelle löschen, unabhängig von den Punkteinformationen. Ob es im Punkteblatt vorhanden ist. Nach dem Einrichten einer Fremdschlüsselbeziehung schränkt die MySQL-Datenbank jedoch die beiden oben genannten Verhaltensweisen ein. Jedes Mal, wenn Daten eingefügt oder gelöscht werden, wird die Datenintegrität überprüft, sodass unsere Vorgänge der tatsächlichen Situation entsprechen müssen.

2. Erstellung von Fremdschlüsseleinschränkungen

(1) Bedingungen für die Erstellung von Fremdschlüsseleinschränkungen

Die Erstellung von Fremdschlüsseln in der MySQL-Datenbank muss die folgenden vier Bedingungen erfüllen, andernfalls wird sie von der MySQL-Datenbank abgelehnt:
1. Fremdschlüssel erstellen. Die Tabellen und Spalten sind vorhanden. 2. Die Spalten, aus denen der Fremdschlüssel besteht, sind in Indizes vorhanden. 3. Die Engine der Datentabelle muss als InnoDB angegeben werden. 4. Die Datentypen der Fremdschlüsselfelder und der zugehörigen Felder Felder müssen konsistent sein Fremdschlüsselfeld dieser Tabelle nach der Erstellungsanweisung der Datentabelle und verwenden Sie das Referenzschlüsselwort, um das Fremdschlüsselfeld der zugehörigen Tabelle anzugeben. Ordnen Sie einfach die Felder zu und schränken Sie das Verhalten klar ein.
Ein Beispiel für eine SQL-Anweisung zum Erstellen einer Fremdschlüsseleinschränkung lautet wie folgt:

create table student (id int(8),name varchar(20),department varchar(20) ,index (id))ENGINE=InnoDB;
create table grade (Sid int(8),Cid int(10),score int,index(Sid),foreign key (Sid) references student(id) on  delete  restrict on update cascade)ENGINE=InnoDB;

In der obigen SQL-Anweisung gibt „On-Delete-Restrict“ an, dass der Fremdschlüssel den Löschvorgang beim Löschen einschränkt, während „On-Update-Cascade“ angibt, dass der Fremdschlüssel den Löschvorgang beim Löschen einschränkt -Taste schränkt den Löschvorgang ein, wenn Aktualisierungsvorgänge synchronisiert werden.

(3) Fremdschlüsseleinschränkungen nach dem Erstellen der Datentabelle hinzufügenIn ähnlicher Weise unterstützt MySQL auch das Hinzufügen von Fremdschlüsseleinschränkungen nach dem Erstellen der Datentabelle. Im obigen Beispiel löschen wir zuerst die Notentabelle und erstellen dann die Notentabelle. Versuchen Sie, nach dem Erstellen der Notentabelle Fremdschlüssel hinzuzufügen:

drop table grade;
create table grade(Sid int(8),Cid int(10),score int);
alter table grade add index(Sid);
alter table grade add foreign key (Sid) references student(id) on delete restrict on update cascade;

Die Ausführung Die Ergebnisse sind wie folgt:

3. Demonstration der Fremdschlüssel-Einschränkungsfunktion

Als nächstes testen wir die Funktion der Fremdschlüssel-Einschränkung. Versuchen Sie zunächst, die Note eines nicht vorhandenen Schülers in die Notentabelle einzufügen, und finden Sie diese heraus Es wurde abgelehnt:

Versuchen Sie dann, die Schülertabelle zu löschen. Es wurde festgestellt, dass Schüler mit Noten in abgelehnt wurden: Zusammenfassung der Wissenspunkte zu MySQL-Fremdschlüsseleinschränkungen

Als Nächstes haben wir die Kaskadenaktualisierungsfunktion für MySQL-Fremdschlüsseleinschränkungen getestet und festgestellt, dass, wenn die Daten in der Wenn sich die Schülertabelle ändert, ändert sich auch die Notentabelle, wie unten gezeigt:

Zusammenfassung der Wissenspunkte zu MySQL-Fremdschlüsseleinschränkungen

Empfohlenes Lernen:

MySQL-Video-TutorialZusammenfassung der Wissenspunkte zu MySQL-Fremdschlüsseleinschränkungen

Das obige ist der detaillierte Inhalt vonZusammenfassung der Wissenspunkte zu MySQL-Fremdschlüsseleinschränkungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen