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

So verwenden Sie „union all“ in MySQL, um die Union-Sortierung zu erhalten

Manchmal kommt es in einem Projekt aus irreversib...

Einführung in die Verwendung des MySQL mysqladmin-Clients

Inhaltsverzeichnis 1. Überprüfen Sie den Status d...

Schritte zur Vue-Batch-Update-DOM-Implementierung

Inhaltsverzeichnis Szeneneinführung Hohe Reaktion...

Details zu MySQL-Zeittypen und -Modi

Inhaltsverzeichnis 1. MySQL-Zeittyp 2. Überprüfen...

Zwei Möglichkeiten zum Konfigurieren globaler Vue-Methoden

Inhaltsverzeichnis 1. Einleitung 2. Die erste Met...

Zusammenfassung der bei der Arbeit häufig verwendeten Linux-Befehle

Verwenden Sie bei der Arbeit mehr Open-Source-Too...

HTML+Sass implementiert HambergurMenu (Hamburger-Menü)

Vor ein paar Tagen habe ich mir ein Video von ein...

CSS Skills Collection – Klassiker unter den Klassikern

Entfernen Sie das gepunktete Kästchen auf dem Link...

Eine kurze Einführung in die Kernkenntnisse der VUE uni-app

Inhaltsverzeichnis Spezifikation a. Die Auslageru...

So verwenden Sie den VIM-Editor unter Linux

Als leistungsstarker Editor mit umfangreichen Opt...

MySQL-Abfragedaten für heute, diese Woche, diesen Monat und letzten Monat

Heute Wählen Sie * aus Tabellenname, wobei to_day...