Detaillierte Erläuterung von drei Beziehungsbeispielen für MySQL-Fremdschlüssel

Detaillierte Erläuterung von drei Beziehungsbeispielen für MySQL-Fremdschlüssel

Dieser Artikel beschreibt anhand von Beispielen die drei Beziehungen der MySQL-Fremdschlüssel. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Aufgrund der Fremdschlüsseleinschränkung bilden die beiden Tabellen drei Arten von Beziehungen:

  • Viele zu Eins
  • Viele-zu-viele
  • Eins-zu-eins

Eins-zu-viele oder viele-zu-eins

Viele zu Eins

Tabelle erstellen drücken(
  ID int Primärschlüssel auto_increment,
  Name varchar(20)
);
Tabelle Buch erstellen(
  ID int Primärschlüssel auto_increment,
  Name varchar(20),
  press_id int ungleich null,
     Einschränkung fk_book_press Fremdschlüssel (press_id) Referenzen press(id)
  bei Löschkaskade
  bei Updatekaskade
);

# Fügen Sie zuerst die Datensätze in die zugehörige Tabelle ein, und fügen Sie sie in press(name)-Werte ein.
(,,Beijing Industrial Mine Press‘‘),
(„Volksmusik ist nicht gut für Verlage“)
(„Geistiges Eigentum ist für Verleger nutzlos“)
;
# Datensätze in die zugehörige Tabelle einfügen, in Buchwerte (Name, Press_ID) einfügen
('Neun Yang Magie',1),
('Neun Yin Handbuch',2),
('Neun Yin weiße Knochenklaue',2),
('Dugu Jiujian',3),
('Zehn Ohrfeigen, um den Drachen zu bezwingen', 2),
('Sonnenblumen-Sammlung',3)
;

Abfrageergebnisse:

mysql> wähle * aus Buch;
+----+-----------------+----------+
| ID | Name | Presse-ID |
+----+-----------------+----------+
| 1 | Neun-Yang-Magiefertigkeit | 1 |
| 2 | Neun Yin-Handbuch | 2 |
| 3 | Neun Yin-Knochenklaue | 2 |
| 4 | Dugu Jiujian | 3 |
| 5 | Zehn Schläge des Drachen | 2 |
| 6 | Sunflower Handbuch | 3 |
+----+-----------------+----------+
Zeilen im Set (0,00 Sek.)
mysql> wählen Sie * aus drücken;
+----+--------------------------------+
| Ich würde | Name |
+----+--------------------------------+
| 1 | Pekinger Industrie- und Bergbaupresse |
| 2 | Volksmusikverlag |
| 3 | Geistiges Eigentum ist nutzlos |
+----+--------------------------------+
Zeilen im Set (0,00 Sek.)

Viele-zu-viele, Einführung einer dritten Tabelle

Viele-zu-viele

# Erstellen Sie die zugehörige Tabelle „table author“. Die vorherige Tabelle „book“ wurde in einer Viele-zu-eins-Beziehung erstellt. create table author(
  ID int Primärschlüssel auto_increment,
  Name varchar(20)
);
#Diese Tabelle speichert die Beziehung zwischen der Autorentabelle und der Buchtabelle. Um die Beziehung zwischen den beiden abzufragen, fragen Sie einfach diese Tabelle ab. create table author2book(
  id int ungleich null eindeutig auto_increment,
  author_id int ungleich null,
  book_id int ungleich null,
  Einschränkung fk_author Fremdschlüssel(author_id) verweist auf author(id)
  bei Löschkaskade
  bei Update-Kaskade,
  Einschränkung fk_book Fremdschlüssel (Buch-ID) Referenzen Buch (ID)
  bei Löschkaskade
  bei Update-Kaskade,
  Primärschlüssel (Autor-ID, Buch-ID)
);
#Fügen Sie vier Autoren mit ihren in der Reihenfolge angeordneten IDs ein. Einfügen in Autor(Name)-Werte('egon'),('alex'),('wusir'),('yuanhao');
# Repräsentative Werke jedes Autors egon: Neun Yang Magic Art, Neun Yin Manual, Neun Yin Bones Claw, Dugu Jiujian, Zehn Handflächen der Drachenbezwingung, Sonnenblumensammlung alex: Neun Yang Magic Art, Sonnenblumensammlung wusir: Dugu Jiujian, Zehn Handflächen der Drachenbezwingung, Sonnenblumensammlung yuanhao: Neun Yang Magic Art # Entsprechende Daten in die Tabelle author2book einfügen insert into author2book(author_id,book_id) values
(1,1),
(1,2),
(1,3),
(1,4),
(1,5),
(1,6),
(2,1),
(2,6),
(3,4),
(3,5),
(3,6),
(4,1)
;

# Jetzt können Sie die Beziehung zwischen dem Autor und dem Buch entsprechend author2bookmysql> select * from author2book; überprüfen.
+----+-----------+---------+
| ID | Autoren-ID | Buch-ID |
+----+-----------+---------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 1 | 4 |
| 5 | 1 | 5 |
| 6 | 1 | 6 |
| 7 | 2 | 1 |
| 8 | 2 | 6 |
| 9 | 3 | 4 |
| 10 | 3 | 5 |
| 11 | 3 | 6 |
| 12 | 4 | 1 |
+----+-----------+---------+
Zeilen im Set (0,00 Sek.)

Eins-zu-eins-Situation

Eins-zu-eins

#Beispiel: Ein Benutzer kann nur ein Blog registrieren. #Zwei Tabellen: Benutzertabelle (Benutzer) und Blogtabelle (Blog)
# Eine Benutzertabelle erstellen create table user(
  ID int Primärschlüssel auto_increment,
  Name varchar(20)
);
# Erstellen Sie eine Blog-Tabelle create table blog(
  ID int Primärschlüssel auto_increment,
  URL varchar (100),
  Benutzer-ID int eindeutig,
  Einschränkung fk_user Fremdschlüssel (Benutzer-ID) verweist auf Benutzer(-ID)
  bei Löschkaskade
  bei Updatekaskade
);
#Datensätze in die Benutzertabelle einfügen in Benutzer(name)-Werte einfügen
('Alex'),
('wusir'),
('egon'),
('xiaoma')
;
#Datensätze in Blog-Tabelle einfügen in Blog-Werte (URL, Benutzer-ID) einfügen
('http://www.cnblog/alex',1),
('http://www.cnblog/wusir',2),
('http://www.cnblog/egon',3),
('http://www.cnblog/xiaoma',4)
;
# Abfrage der Blogadresse von Wusir. Wählen Sie die URL aus dem Blog aus, wo user_id=2 ist.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Grundfunktionen und Verwendung von MySQL-Fremdschlüsseln
  • Optimierung von Datentabellen in MySQL-Datenbanken, Analyse von Fremdschlüsseln und Nutzung von drei Paradigmen
  • Detaillierte Erklärung zum Erstellen einer Datentabelle in MySQL und zum Herstellen von Primär- und Fremdschlüsselbeziehungen
  • Beispiele für allgemeine Operationen mit MySQL-Fremdschlüsseleinschränkungen [Anzeigen, Hinzufügen, Ändern, Löschen]
  • Gründe und Lösungen für das Fehlschlagen der Erstellung von Fremdschlüsseln durch MySQL
  • Einführung in die MySQL-Methode zum Löschen von Tabellendaten mit Fremdschlüsseleinschränkungen
  • Einfache Implementierung zum Ignorieren von Fremdschlüsseleinschränkungen beim Löschen von MySQL-Tabellen
  • MySQL fügt einen Fremdschlüsselfehler hinzu: 1215 Die Fremdschlüsseleinschränkungslösung kann nicht hinzugefügt werden
  • So verwenden Sie Fremdschlüssel in MySQL, um kaskadierendes Löschen und Aktualisieren zu implementieren
  • Lösung für Fremdschlüsselfehler bei der MySQL-Tabellenerstellung

<<:  Vue implementiert rekursiv benutzerdefinierte Baumkomponenten

>>:  Detaillierte Erläuterung des Zeitdarstellungsbeispiels des Linux-Zeitsubsystems

Artikel empfehlen

Detaillierte Erklärung der schmerzlosen Token-Aktualisierungsmethode von Uniapp

Wenn das Front-End die Schnittstelle anfordert, w...

Lösen Sie das Problem der Angabe der UDP-Portnummer im Docker

Wenn Docker einen Container startet, gibt es den ...

Das Bildelement img hat in IE6 zusätzlichen Leerraum

Beim Erstellen eines DIV+CSS-Layouts einer Seite ...

Lösen Sie das Problem der Randzusammenführung

1. Die Ränder von Geschwisterelementen zusammenfü...

Beispielcode für HTML-Layout links und rechts

CSS: Code kopieren Der Code lautet wie folgt: html...

MySQL-Löschfunktion für Mehrfachtabellenverbindungen

Löschen einer einzelnen Tabelle: LÖSCHEN AUS Tabe...

Schnelle und sichere Methode zum Umbenennen einer MySQL-Datenbank (3 Arten)

Inhaltsverzeichnis So benennen Sie eine MySQL-Dat...

Verwendung des offiziellen MySQL-Exporttools mysqlpump

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

Nginx tp3.2.3 404 Problemlösung

Vor Kurzem habe ich Apache auf nginx umgestellt. ...

So lassen sich Python-Skripte direkt unter Ubuntu ausführen

Nehmen wir als Beispiel das Übersetzungsprogramm....

Müssen die Texte der Website noch gestaltet werden?

Viele fragen sich vielleicht: Muss der Text auf d...