Detaillierte Erklärung der referenziellen Integrität in SQL (eins-zu-eins, eins-zu-viele, viele-zu-viele)

Detaillierte Erklärung der referenziellen Integrität in SQL (eins-zu-eins, eins-zu-viele, viele-zu-viele)

1. Referenzielle Integrität

Referenzielle Integrität bezieht sich auf den Entwurf zwischen mehreren Tabellen, hauptsächlich unter Verwendung von Fremdschlüsseleinschränkungen.
Mehrtabellendesign: Eins-zu-viele-, Viele-zu-viele-, Eins-zu-eins-Design

1. Eins-zu-viele

Dazu passende Schlüsselsätze:
Einschränkung cus_ord_fk Fremdschlüssel (Kunden-ID) REFERENZEN Kunde(ID)
Kundentabelle erstellen - Bestelltabelle. Ein Kunde kann mehrere Bestellungen aufgeben und jede Bestellung kann nur einen Kunden haben.

-- Assoziation (1 bis N)

Tabelle Kunde erstellen(

	ID int PRIMARY KEY auto_increment,
	Name varchar (20) nicht null,
	Adresse varchar (20) nicht null

);

Tischbestellungen erstellen(

	order_num varchar(20) PRIMÄRSCHLÜSSEL,

	Preis FLOAT nicht NULL,

	customer_id int, -- Fremdschlüsseleinschränkung cus_ord_fk Fremdschlüssel (customer_id) REFERENZEN customer(id)

);

in Kunden (Name, Adresse) Werte einfügen („zs“, „Name“);

in Kunden (Name, Adresse) einfügen Werte („ls“, „Name“);

SELECT * vom Kunden;

INSERT INTO Bestellungen Werte("010",30.5,1);

INSERT INTO Bestellungen Werte("011",60.5,2);

INSERT INTO Bestellungen Werte("012",120.5,1);

SELECT * aus Bestellungen;

Hinweis: Einschränkung: bedeutet Einschränkung. Fremdschlüssel: Fremdschlüssel. Referenzen: Erstellen Sie eine Fremdschlüsseleinschränkung mit dem Namen „customer_id_fk“, wobei der Fremdschlüssel „customer_id“ und die Referenz die ID-Spalte in der Kundentabelle ist.

Erweiterungen:

Lösch- und Aktualisierungsstrategie der Worttabelle:

  1. 1) CASCADE-Kaskadenstrategie. Bei Verwendung dieser Strategie wird die Untertabelle synchron gelöscht oder geändert, wenn die Datensätze der Haupttabelle gelöscht oder das Primärschlüsselfeld geändert wird.
  2. 2) KEINE MASSNAHME Keine Aktionsstrategie. Wenn Sie diese Strategie verwenden, müssen Sie zuerst die untergeordnete Tabelle löschen, um die Haupttabelle zu löschen. Sie müssen zuerst die mit der untergeordneten Tabelle verknüpften Datensätze löschen, um die Datensätze in der Haupttabelle zu löschen. Sie können den Wert des Primärschlüsselfelds in der Haupttabelle nicht aktualisieren.
  3. 3) RSTRICT-Einschränkungsstrategie für die Haupttabelle. Diese Strategie hat die gleichen Einschränkungen für die Haupttabelle wie KEINE AKTION
  4. 4) Legen Sie KEINE klare Strategie fest. Wenn bei dieser Strategie die Primärtabelle gelöscht oder der Primärschlüssel geändert wird, werden die Fremdschlüssel in den untergeordneten Tabellen auf NULL gesetzt. Es ist zu beachten, dass, wenn der Fremdschlüssel der untergeordneten Tabelle der Primärschlüssel ist oder auf NICHT NULL gesetzt ist, das Löschen der Haupttabelle und das Ändern des Primärschlüssels dasselbe sind wie KEINE AKTION.

2. Viele-zu-viele

Erstellen Sie eine Schüler-Lehrer-Beziehungstabelle, in der ein Schüler mehrere Lehrer und ein Lehrer mehrere Schüler haben kann

- Viele-zu-viele-Beziehung - Erstellen einer Lehrertabelle CREATE TABLE teacher (
	Ich würde INT,
	NAME VARCHAR (20) NICHT NULL,
	Geschlecht CHAR (2) NOT NULL,
	PRIMÄRSCHLÜSSEL (id)
);

-- Erstellen Sie eine Studententabelle CREATE TABLE student (
	Ich würde INT,
	NAME VARCHAR (20) NICHT NULL,
	Alter INT NICHT NULL
);

ALTER TABLE Student ADD PRIMARY KEY (ID);

-- Die dritte Relationstabelle CREATE TABLE tch_std (
	Lehrer-ID INT,
	Studenten-ID INT,
	CONSTRAINT fk_teacher FOREIGN KEY (teacher_id) REFERENZEN Lehrer (id),
	CONSTRAINT fk_student FOREIGN KEY (student_id) REFERENZEN Lehrer (id)
);

LÖSCHEN
AUS
	Lehrer
WO
	Ich würde = 3;

WÄHLEN
	*
AUS
	Lehrer;

AUSWÄHLEN
	*
AUS
	tch_std;

Achtung: Viele-zu-viele sind drei Tabellen, die dritte Tabelle erstellt eine Fremdschlüsseleinschränkung, die der ID in den ersten beiden Tabellen entspricht

3. Eins-zu-eins

Zwei Formen:

1) Fügen Sie dem Fremdschlüssel in der IdCard-Tabelle eine eindeutige Einschränkung entsprechend der Fremdschlüsselzuordnung hinzu
2) Fügen Sie dem Primärschlüssel Fremdschlüsseleinschränkungen entsprechend der Primärschlüsselzuordnung hinzu

-- Eins-zu-eins -- Erstellen Sie die Benutzertabelle CREATE TABLE users (
	Ich würde INT,
	NAME VARCHAR (20) NICHT NULL,
	Geschlecht CHAR (2) NOT NULL,
	PRIMÄRSCHLÜSSEL (id)
);

-- Erstellen Sie die Kartentabelle CREATE TABLE card (
	Ich würde INT,
	Adresse VARCHAR (100) NOT NULL,
	Benutzer-ID INT UNIQUE,
	Einschränkung users_id_fk Fremdschlüssel (user_id) verweist auf users(id)
);

ALTER TABLE-Karte ADD PRIMARY KEY (ID);

Dies ist Methode 1, bei der eine eindeutige Einschränkung für den Fremdschlüssel hinzugefügt wird

Oben finden Sie die ausführliche Erklärung und Integration der referenziellen Integrität in SQL, die vom Herausgeber vorgestellt wurde. Ich hoffe, dass sie für alle hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • MySQL: Datenintegrität
  • Beispiele für Dateneinschränkungen basierend auf einer MySQL-Datenbank und Einführung in fünf Integritätseinschränkungen
  • MySQL Detaillierte Analyse vom Löschen der Datenbank bis zum Weglaufen_Fortgeschritten (I) - Datenintegrität
  • Detaillierte Erläuterung der SQL Server-Datenbankarchitektur und -Objekte, Definition der Datenintegrität
  • Unbedingt zu kennende SQL-Anweisungen (VIII) Integritätsbeschränkungen für Datenbanken
  • MySQL-Lernhinweise 4: Integritätsbeschränkungsfelder

<<:  SpringBoot integriert Activiti7-Implementierungscode

>>:  jQuery ermöglicht nahtloses Scrollen von Tabellen

Artikel empfehlen

Beispiel zum schnellen Löschen einer 2T-Tabelle in MySQL in Innodb

Vorwort Dieser Artikel stellt hauptsächlich den r...

Details zur Vue-Vorlagenkompilierung

Inhaltsverzeichnis 1. analysieren 1.1 Regeln für ...

Vue verwendet Canvas, um den Bildkomprimierungs-Upload zu realisieren

In diesem Artikel wird der spezifische Code von V...

Detaillierte Einführung in den DOCTYPE-Typ

<br />Wir deklarieren DOCTYPE in HTML normal...

Fünf praktische Tipps zur Gestaltung von Webformularen

1. Mobile Auswahl der Formulartexteingabe: Wenn i...

Verwendung von Docker-Image-Speicher-Overlays

1. Übersicht Das Image in Docker ist in Schichten...

Einführung in Who-Befehlsbeispiele in Linux

Über wen Zeigt die am System angemeldeten Benutze...

Verwenden Sie reines CSS, um einen Switch-Effekt zu erzielen

Zuerst ist die Idee Um diesen Effekt zu erzielen,...

HTML-Tipps, um Ihren Code semantisch zu gestalten

HTML-Semantik scheint ein alltägliches Problem zu...

Detaillierte Schritte zur Installation von Anaconda unter Linux (Ubuntu 18.04)

Anaconda ist die beliebteste Python-Plattform für...

Natives JS zur Implementierung der Dropdown-Box-Auswahlkomponente

In diesem Artikelbeispiel wird der spezifische JS...

Vue3 implementiert ein Beispiel für eine Nachrichtenkomponente

Inhaltsverzeichnis Komponentendesign Definieren d...

So stellen Sie mit Node-Red eine Verbindung zur MySQL-Datenbank her

Um Node-red mit der Datenbank (mysql) zu verbinde...