Database
 sql >> Datenbank >  >> RDS >> Database

SQL FOREIGN KEY CONSTRAINT:Der ultimative, einfache Leitfaden für Neulinge

Neuling? Dann kann Ihnen ein SQL-Fremdschlüssel fremd sein.

Möglicherweise haben Sie unterschiedliche Meinungen über SQL-Fremdschlüssel gehört. Wenn nicht, werden Sie es bald tun. Oder Ihre Erfahrung beeinflusst Ihre Sichtweise. Das Wichtigste ist, dass Fremdschlüssel in relationalen Datenbanken ein Muss sind.

Einige Entwickler können jedoch Fremdschlüssel entfernen oder ignorieren, wenn sie mit Komplikationen konfrontiert werden. Also, was tun? Soll der Fremdschlüssel verwendet werden oder nicht? Wird es Zeiten geben, in denen Sie sie nicht benötigen?

Dieser Leitfaden soll Ihnen zeigen, wie wichtig diese Sache ist. Sie werden auch einige Fallstricke im Code kennen und lernen, wie man sie behebt. Außerdem werden wir natürlich praktische Beispiele verwenden. Es gibt nichts, was Sie nicht bewältigen können.

Was ist ein SQL-Fremdschlüssel?

Das wichtigste zuerst. Was ist ein Fremdschlüssel in SQL? In wenigen Worten, es ist ein Schlüssel, der 2 Tabellen verbindet. Angenommen, Sie haben eine übergeordnete Tabelle und eine untergeordnete Tabelle. Es gibt einige Gemeinsamkeiten, die sie zu einem Elternteil und einem Kind machen – der Schlüssel, der diese beiden Tabellen verknüpft.

In SQL-Datenbanken bezieht sich ein Fremdschlüssel jedoch nicht nur auf Tabellen. Es erzwingt die Beziehung. Aus diesem Grund wird es als Fremdschlüsselbeschränkung bezeichnet.

Ein Fehler tritt auf, wenn Sie versuchen, einen untergeordneten Datensatz mit einem Fremdschlüsselwert hinzuzufügen, der nicht in den Primärschlüsseln der übergeordneten Tabelle vorhanden ist. Später werden wir Codebeispiele sehen, die dies veranschaulichen.

Welche Tabellen sollten SQL-Fremdschlüsselbeschränkungen haben?

Untergeordnete Tabellen können Fremdschlüssel haben. Ein Fremdschlüssel kann auf eine andere Tabelle verweisen. Außerdem können mehrere Fremdschlüssel in einer „untergeordneten“ Tabelle vorhanden sein. In SQL Server kann ein Fremdschlüssel auf einen Primärschlüssel oder einen eindeutigen Schlüssel in einer anderen Tabelle verweisen.

Wie wäre es mit Selbstreferenz?

Dies geht aus der allgemeinen Definition eines Fremdschlüssels heraus. Eine Selbstreferenz bedeutet, dass Sie einen Fremdschlüssel zuweisen können, der referenziert eine andere Spalte in derselben Tabelle . SQL Server, MySQL und Oracle unterstützen dies.

Die Selbstreferenz ist anwendbar, wenn Sie Hierarchien wie die Manager-Mitarbeiter-Beziehung erstellen möchten. Es ist jedoch erlaubt, dass die meisten Implementierungen von Fremdschlüsseln zwischen 2 Tabellen liegen.

Später werden wir Beispiele haben.

4 Vorteile der Verwendung von SQL-Fremdschlüsseln

Lassen Sie uns den Primärschlüssel und den Fremdschlüssel in SQL im Detail untersuchen. Was macht Fremdschlüssel zu einem Muss für eine SQL-Datenbank? Lassen Sie uns 4 Punkte untersuchen (hier spielt die Einschränkungssyntax keine Rolle).

1. Vermeiden Sie „fehlende“ Daten

„Fehlende“ Daten sind Fremdschlüsselwerte aus untergeordneten Tabellen ohne zugeordnete Primärschlüsselwerte aus der übergeordneten Tabelle. Sie werden auch als verwaiste Zeilen bezeichnet. Wenn es passiert, können wir sagen, dass die Datenbank wenig oder keine referenzielle Integrität hat.

Wenn Fremdschlüsselbeschränkungen erzwungen werden, werden „fehlende“ Daten überhaupt nicht vorkommen. Das Datenbankmodul lässt das Löschen eines Primärschlüsselwerts nicht zu, auf den von einer anderen Tabelle verwiesen wird. Ebenso wird das Einfügen eines Fremdschlüssels in die untergeordnete Tabelle, der in den Primärschlüsseln der übergeordneten Tabelle nicht vorhanden ist, einen Fehler auslösen.

Was ist das Schlimmste, was passieren kann, wenn Sie die Fremdschlüsselbeschränkungen nicht verwenden? Hier sind ein paar:

  • Kunden erhalten keine Produkte, für die sie bezahlt haben.
  • Patienten werden nicht behandelt.
  • Fehlende Checklisten überspringen Sicherheitsvorkehrungen.

Sie können dieses Zeug außerhalb der Datenbank handhaben, aber Sie müssen es codieren. Mehr dazu folgt.

Angenommen, ein Entwickler in Ihrer Organisation hat die gleiche Einschränkung außerhalb der Datenbank behandelt. Wird er verantwortlich sein und das Problem in der Produktion beheben, wenn der Code fehlschlägt? Ich glaube nicht. Und was ist, wenn Sie der Datenbankadministrator sind? Dann müssen Sie ihr Chaos beseitigen. Nicht so ermutigend, wenn Sie mich fragen.

2. Vermeiden Sie widersprüchliche Berichte

Es bezieht sich auf den ersten Punkt. Wenn einige Daten „fehlen“, erscheinen in unterschiedlichen Berichten inkonsistente Summen. Details stimmen nicht mit den Zusammenfassungen überein. Verwaiste Zeilen addieren sich zu den Summen der Zusammenfassungen. In der Zwischenzeit hat der detaillierte Bericht keine verwaisten Zeilen aufgrund einer inneren Verknüpfung mit den übergeordneten Tabellen erfasst.

Wenn es Ihre Aufgabe ist, Ihre Datenbank in gutem Zustand zu halten, werden Sie auch dieses Chaos beseitigen.

3. Kein Code erforderlich, um verwaiste Zeilen zu vermeiden

Fremdschlüsseleinschränkungen wirken wie Selbstreinigungsmittel. Anstatt dass Sie das Chaos aufräumen, tut dies die Datenbank, indem sie verwaiste Zeilen nicht zulässt. Fremdschlüsselbeschränkungen fungieren auch als Polizei. Sie verhaften die fehlerhafte Logik, die verwaiste Zeilen verursacht, und behandeln sie wie ein Verbrechen, das außerhalb der Datenbank begangen wird.

Möchten Sie eine glänzende Datenbank ohne verwaiste Zeilen? Natürlich tust du. Wenn Sie die Daten eines Tages analysieren möchten, werden Sie froh sein, Fremdschlüssel verwendet zu haben. Diese Datenbank ist eine gute Quelle, um die notwendigen Daten in Ihren Staging-Bereich zu kopieren.

4. Tabellenbeziehungen in einem Diagramm schnell verstehen

SQL Server Management Studio verfügt über ein integriertes Diagrammtool für Ihre Datenbank. Primär- und Fremdschlüssel machen das Datenbankdiagramm auf einen Blick informativ. Dies hängt jedoch davon ab, wie viele Tabellen mit Beziehungen Sie in das Diagramm aufgenommen haben.

Diagramme helfen neuen Teammitgliedern, die Datenstruktur zu verstehen. Für ältere Teamkollegen kann es auch als Dokumentation nützlich sein.

Wenn SQL-Fremdschlüssel ein „Problem“ sein können (plus die Lösung)

Um alte Daten in eine neue Datenbank zu migrieren, fügen Sie Datensätze in großen Mengen ein. Wenn die Quelldatenbank eine geringe referenzielle Integrität aufweist, ist es mühsam, Datensätze aus der Quelle einzufügen. Der Grund dafür ist, dass hier und da Fremdschlüsselfehler auftauchen.

Gibt es eine Lösung? Sie haben 2 Möglichkeiten.

  1. Stellen Sie sicher, dass Sie zuerst die Referenztabellen oder die übergeordneten Tabellen füllen. Füllen Sie danach die untergeordneten Tabellen. Eine Komplikation läuft sehr langsam. In anderen Fällen treten mehr Fremdschlüsseleinschränkungsfehler auf. Im letzteren Fall müssen Sie die Reihenfolge der Einfügungen neu bewerten und sicherstellen, dass die Primärschlüssel zuerst eingefügt werden. Wenn es ein „langsames“ Problem gibt, ziehen Sie die nächste Option in Betracht.
  2. Deaktivieren Sie die Fremdschlüssel vorübergehend und aktivieren Sie sie, nachdem die Migration abgeschlossen (und bereinigt) ist. Sie können dies in SQL Server Management Studio tun oder T-SQL ALTER TABLE verwenden. Es ist jedoch leichter gesagt als getan. An diesem Punkt brauchen Sie neben Ihrem Verstand und Ihrer Willenskraft mehr Geduld. Später finden wir die Syntax zum Deaktivieren und erneuten Aktivieren von Fremdschlüsseln.

Eine weitere zu berücksichtigende Sache ist die Verwendung einer Datenbank als Staging-Bereich für OLAP oder Datenanalyse. Angenommen, die transaktionale Quelldatenbank ist frei von verwaisten Zeilen. Oder Sie können diese Zeilen durch Code vermeiden. Dann können Sie sich dafür entscheiden, keine Fremdschlüssel zu verwenden. Fremdschlüssel verlangsamen Masseneinfügungen und -aktualisierungen, insbesondere bei riesigen Datensätzen.

3 einfache Möglichkeiten zum Hinzufügen, Bearbeiten und Löschen von SQL-Fremdschlüsselbeschränkungen

Was ist erforderlich, um Fremdschlüssel hinzuzufügen, zu bearbeiten oder zu löschen? Mit diesen 3 Tipps ist es ganz einfach.

Die ersten beiden Schritte verwenden eine grafische Benutzeroberfläche. Tools wie SQL Server Management Studio oder dbForge Studio for SQL Server sind sehr gute Kandidaten. Der dritte wird T-SQL-Code verwenden. Die Wahl eines GUI- oder T-SQL-Codes hängt von der Situation ab.

1. Verwenden von Table Designer zum Hinzufügen, Bearbeiten und Löschen von SQL-Fremdschlüsselbeschränkungen

In SQL ist es möglich, beim Erstellen oder Ändern einer Tabellenstruktur mit Table Designer Fremdschlüsselbeschränkungen hinzuzufügen im SSMS. Abbildung 1 unten zeigt, wie Sie über das Hauptmenü darauf zugreifen, wenn die Tabellenstruktur geöffnet ist.

Eine andere Möglichkeit besteht darin, mit der rechten Maustaste auf eine beliebige Stelle im Tabellendesigner zu klicken und Beziehungen auszuwählen aus dem Kontextmenü:

Nachdem Sie Beziehungen ausgewählt haben , die Fremdschlüsselbeziehungen Fenster erscheint:

In den Fremdschlüsselbeziehungen Fenster können Sie einen neuen Fremdschlüssel hinzufügen oder einen bestehenden bearbeiten/löschen.

Wenn Sie hinzufügen oder bearbeiten möchten, klicken Sie auf Tabellen und Spalten, um sie zu erweitern Spezifikationen. Klicken Sie dann auf die Ellipse Schaltfläche zum Definieren oder Bearbeiten der Primär- und Fremdschlüsseltabellen.

Von dort aus können Sie die Primär- und Fremdschlüsselspalten angeben.

Nachdem Sie die Primär- und Fremdschlüssel definiert haben, klicken Sie auf OK . Navigieren Sie dann zurück zum Tabellendesigner und speichern Sie die Änderungen.

2. Verwenden des Datenbankdiagramms zum Hinzufügen, Bearbeiten und Löschen von SQL-Fremdschlüsselbeschränkungen

Sie können das Datenbankdiagramm verwenden, um SQL-Fremdschlüsseleinschränkungen zu erstellen. Abbildung 5 zeigt, wie Sie eine Beziehung zwischen zwei Tabellen erstellen, indem Sie auf die Fremdschlüsseltabelle klicken und sie in die Primärschlüsseltabelle ziehen.

Wenn Sie die Maustaste loslassen, werden die Tabellen und Spalten angezeigt Es erscheint ein Fenster wie das in Abbildung 4. Dann können Sie die Primär- und Fremdschlüsselspalten angeben. Klicken Sie dann auf OK.

Um eine vorhandene Beziehung zu bearbeiten, klicken Sie mit der rechten Maustaste auf eine Beziehung im Diagramm. Wählen Sie dann Eigenschaften aus :

Dann in den Eigenschaften Erweitern Sie im Fenster Tabellen und Spalten und klicken Sie auf die Ellipse Schaltfläche:

Nachdem Sie auf die Ellipse geklickt haben Schaltfläche, die Tabellen und Spalten Fenster erscheint. Sie können die Primär- und Fremdschlüsselspalten ändern (siehe erneut Abbildung 4 oben).

In der Zwischenzeit Beziehung löschen erfordert einen Rechtsklick auf einen vorhandenen Verhältnis. Wählen Sie Beziehungen aus Datenbank löschen aus und klicken Sie auf Ja wenn Sie dazu aufgefordert werden.

3. Verwenden von T-SQL zum Hinzufügen, Bearbeiten und Löschen von SQL-Fremdschlüsselbeschränkungen

Die dritte Möglichkeit, einen Fremdschlüssel hinzuzufügen, ist der T-SQL-Code. Sie können SQL CREATE TABLE verwenden und die Fremdschlüsseleinschränkung hinzufügen. Sie können diese Einschränkung auch nach dem Erstellen der Tabelle mit ALTER TABLE hinzufügen.

Hier ist die Syntax für die Verwendung von CREATE TABLE:

-- Single-column foreign key
CREATE TABLE Table2
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
 col1 INT NULL REFERENCES Table1(col1)
)
GO

Nachdem Sie den Spaltennamen und -typ definiert haben, können Sie REFERENCES zu einer Tabelle und Spalte hinzufügen. Die obige Syntax zeigt die Tabelle1 Tabelle auf col1 Säule. Beachten Sie, dass Spaltennamen in beiden Tabellen gleich sein müssen, um für Fremdschlüssel gültig zu sein.

Die obige Syntax gilt für einspaltige Fremdschlüssel. Wenn Sie mehrere Spalten als Fremdschlüssel benötigen, verwenden Sie die FOREIGN KEY-Klausel wie folgt:

-- Multiple-column foreign key
CREATE TABLE Table2
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
 col1 INT NOT NULL,
 col2 INT NOT NULL,
 col3 VARCHAR(10) NULL
 CONSTRAINT FK_Table1_Table2 FOREIGN KEY(col1, col2)
	REFERENCES Table1(col1,col2)
)
GO

Nach dem Erstellen der Tabelle können Sie mit ALTER TABLE Fremdschlüssel hinzufügen. Hier ist die Syntax:

ALTER TABLE Table2 WITH CHECK ADD CONSTRAINT FK_Table1_Table2_2 FOREIGN KEY(col3)
	REFERENCES Table3(col1)
GO

Um eine Fremdschlüsseleinschränkung zu löschen, können Sie ALTER TABLE mit DROP CONSTRAINT:

verwenden
ALTER TABLE Table2 
DROP CONSTRAINT FK_Table1_Table2_2
GO

Jetzt können wir 3 Möglichkeiten zum Hinzufügen, Bearbeiten und Löschen von Fremdschlüsseln zusammenfassen:

Beispiele für SQL (MySQL) Foreign Key Constraints

Untergeordnete Tabelle mit 1 Referenz auf eine übergeordnete Tabelle

-- Single Reference
CREATE TABLE [dbo].[Countries](
	[CountryID] [int] IDENTITY(1,1) NOT NULL,
	[Country] [nvarchar](50) NOT NULL,
	[ContinentID] [int] NULL,
	[Modified] [datetime] NOT NULL,
 CONSTRAINT [PK_Country] PRIMARY KEY CLUSTERED 
(
	[CountryID] ASC
))
GO

ALTER TABLE [dbo].[Countries]  WITH CHECK ADD CONSTRAINT [FK_Countries_Continent] FOREIGN KEY([ContinentID])
REFERENCES [dbo].[Continent] ([ContinentID])

GO

ALTER TABLE [dbo].[Countries] CHECK CONSTRAINT [FK_Countries_Continent]
GO

Um diese Beziehung zu veranschaulichen, werfen Sie einen Blick auf Abbildung 9 unten:

Die ContinentID ist der Schlüssel, der die beiden Tabellen miteinander verknüpft.

Untergeordnete Tabelle mit mehreren Referenzen

Der SportsCar Tabelle hat mehrere Verweise auf drei verschiedene Tabellen:

-- Multiple References
CREATE TABLE [dbo].[SportsCars](
	[SportsCarID] [int] IDENTITY(1,1) NOT NULL,
	[ManufacturerID] [int] NULL,
	[StyleID] [int] NULL,
	[CountryID] [int] NULL,
	[Model] [nvarchar](50) NOT NULL,
	[Years] [varchar](50) NOT NULL,
	[Notes] [varchar](255) NOT NULL,
	[Modified] [datetime] NOT NULL,
 CONSTRAINT [PK_SportsCars] PRIMARY KEY CLUSTERED 
(
	[SportsCarID] ASC
))
GO

ALTER TABLE [dbo].[SportsCars] WITH CHECK ADD CONSTRAINT [FK_SportsCars_Country] FOREIGN KEY([CountryID])
REFERENCES [dbo].[Countries] ([CountryID])
GO

ALTER TABLE [dbo].[SportsCars] CHECK CONSTRAINT [FK_SportsCars_Country]
GO

ALTER TABLE [dbo].[SportsCars] WITH CHECK ADD CONSTRAINT [FK_SportsCars_Manufacturer] FOREIGN KEY([ManufacturerID])
REFERENCES [dbo].[Manufacturers] ([ManufacturerID])
GO

ALTER TABLE [dbo].[SportsCars] CHECK CONSTRAINT [FK_SportsCars_Manufacturer]
GO

ALTER TABLE [dbo].[SportsCars] WITH CHECK ADD CONSTRAINT [FK_SportsCars_Styles] FOREIGN KEY([StyleID])
REFERENCES [dbo].[Styles] ([StyleID])
GO

ALTER TABLE [dbo].[SportsCars] CHECK CONSTRAINT [FK_SportsCars_Styles]
GO

So sieht es in einem Datenbankdiagramm aus:

Selbstreferenz

Positionshierarchien zeigen Selbstreferenz in der folgenden Tabelle:

CREATE TABLE [dbo].[Ranks](
	[RankId] [int] IDENTITY(1,1) NOT NULL,
	[Rank] [varchar](50) NOT NULL,
	[RankLevel] [smallint] NOT NULL,
	[RankParentId] [int] NULL,
 CONSTRAINT [PK_Ranks] PRIMARY KEY CLUSTERED 
(
	[RankId] ASC
)) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Ranks] WITH CHECK ADD CONSTRAINT [FK_Ranks_Ranks] FOREIGN KEY([RankParentId])
REFERENCES [dbo].[Ranks] ([RankId])
GO

ALTER TABLE [dbo].[Ranks] CHECK CONSTRAINT [FK_Ranks_Ranks]
GO

Das Schema dieser Selbstreferenz ist einfach. Die Zeile zeigt auf die gleiche Tabelle in Selbstreferenz.

Mit ON UPDATE und ON DELETE

Mit ON UPDATE CASCADE werden beim Aktualisieren eines Primärschlüsselspaltenwerts auch die Fremdschlüsselwerte in zugehörigen Tabellen aktualisiert. Wenn Sie hingegen ON DELETE CASCADE verwenden, werden beim Löschen eines Primärschlüssels auch Fremdschlüssel gelöscht. Der Standardwert für ON UPDATE und ON DELETE ist NO ACTION.

Hier ist ein Beispiel für UPDATE und DELETE CASCADE:

ALTER TABLE [dbo].[Countries] WITH CHECK ADD CONSTRAINT [FK_Countries_Continent] FOREIGN KEY([ContinentID])
REFERENCES [dbo].[Continent] ([ContinentID]) 
ON UPDATE CASCADE 
ON DELETE CASCADE
GO

Deaktivieren einer SQL-Fremdschlüsselbeschränkung

Im Folgenden wird eine vorhandene Fremdschlüsseleinschränkung deaktiviert. Beachten Sie, dass die Beziehung immer noch besteht.

ALTER TABLE [dbo].[SportsCars] NOCHECK CONSTRAINT [FK_SportsCars_Country]
GO

Dies ist nicht die Standardeinstellung und wird nicht empfohlen. Aber um Masseneinfügungen und -aktualisierungen zu beschleunigen, können Sie den Fremdschlüssel wie oben vorübergehend deaktivieren. Wenn Sie fertig sind, müssen Sie es mit CHECK CONSTRAINT zurückschalten.

ALTER TABLE [dbo].[SportsCars] CHECK CONSTRAINT [FK_SportsCars_Country]
GO

Fallstricke und Fehlerbehebungen

Dieser Abschnitt zeigt Ihnen, was passiert, wenn Sie Datensätze mit Fremdschlüsseln EINFÜGEN, UPDATE oder LÖSCHEN. Dies setzt auch voraus, dass Fremdschlüssel nicht deaktiviert sind mit NOCHECK-EINSCHRÄNKUNG. Dies wird Ihnen helfen, wenn Sie auf diese häufigen Probleme stoßen.

Auf EINFÜGEN

-- This will cause an error because countryID = 47 does not exist in the Countries table
INSERT INTO SportsCars 
(ManufacturerID, StyleID, CountryID, Model, Years, Notes) 
VALUES (108, 10, 47, 'F2', '2021', 'Limited Edition')
GO

Hier ist die Fehlermeldung:

Msg 547, Level 16, State 0, Line 56
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_SportsCars_Country". The conflict occurred in database "Vehicles", table "dbo.Countries", column 'CountryID'.
The statement has been terminated.

Die Lösung :Fügen Sie CountryID hinzu =47 in die Länder Tisch zuerst. Führen Sie dann die obige INSERT-Anweisung erneut aus. Die Sequenz beginnt mit dem Einfügen von Datensätzen in die übergeordnete Tabelle und dann in die untergeordnete Tabelle.

Bei UPDATE

-- Update CountryID to 47 will trigger an error.
UPDATE SportsCars
SET CountryID = 47
WHERE ManufacturerID = 108
GO

Hier ist der UPDATE-Fehler:

Msg 547, Level 16, State 0, Line 60
The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_SportsCars_Country". The conflict occurred in database "Vehicles", table "dbo.Countries", column 'CountryID'.
The statement has been terminated.

Die Lösung :Fügen Sie CountryID hinzu =47 in die Länder Tisch. Führen Sie dann die UPDATE-Anweisung erneut aus.

Auf LÖSCHEN

-- This will trigger an error because ManufacturerID = 108 is referenced in the SportsCars table
DELETE FROM Manufacturers
WHERE ManufacturerID = 108

Dieser Code löst den folgenden Fehler aus:

Msg 547, Level 16, State 0, Line 64
The DELETE statement conflicted with the REFERENCE constraint "FK_SportsCars_Manufacturer". The conflict occurred in database "Vehicles", table "dbo.SportsCars", column 'ManufacturerID'.
The statement has been terminated.

Die Lösung :Löschen Sie die entsprechenden Datensätze aus den SportsCars Tabelle mit ManufacturerID =108. Führen Sie dann die obige DELETE-Anweisung erneut aus. Eine andere Möglichkeit besteht darin, ON DELETE CASCADE zu aktivieren, falls zutreffend. Die Sequenz beginnt mit dem Löschen von Datensätzen aus den untergeordneten Tabellen und dann – aus der übergeordneten Tabelle.

Imbiss

Also, sind Ihnen Fremdschlüssel immer noch fremd?

Fassen wir zusammen, was wir bisher gelernt haben.

  • Fremdschlüssel verknüpfen zwei Tabellen (oder eine Tabelle bei Selbstreferenz). Sie benötigen sie, um die referentielle Integrität sicherzustellen.
  • Sie können entweder ein GUI-Tool oder T-SQL verwenden, um die Fremdschlüsseleinschränkungen hinzuzufügen, zu bearbeiten oder zu löschen.
  • Für GUI-Tools können Sie SQL Server Management Studio oder dbForge Studio für SQL Server verwenden. Beide bieten Datenbankdiagramme und Tabellendesigner, um Tabellen mit Primär- und Fremdschlüsseln zu erstellen.
  • CREATE TABLE und ALTER TABLE eignen sich zum Hinzufügen und Löschen der Fremdschlüsselbeschränkungen.
  • Sie können Fremdschlüssel mit NOCHECK CONSTRAINT in ALTER TABLE vorübergehend deaktivieren. Dadurch werden Masseneinfügungen und -aktualisierungen beschleunigt. Stellen Sie jedoch sicher, dass Sie es mit CHECK CONSTRAINT wieder aktivieren.
  • Um Fallstricke mit Fremdschlüsseln zu vermeiden, achten Sie auf die richtige Reihenfolge. Fügen Sie für INSERT und UPDATE zuerst in die übergeordnete Tabelle und dann in die untergeordneten Tabellen ein. Löschen Sie für DELETE zuerst die untergeordneten Datensätze und dann die übergeordneten Datensätze.

Möchten Sie etwas hinzufügen, um Neulingen beim Erlernen von Fremdschlüsseln zu helfen? Die Kommentare Abschnitt ist offen für Ihre hellen Ideen. Wenn Ihnen dieser Beitrag gefällt, teilen Sie ihn bitte auf Ihren bevorzugten Social-Media-Plattformen.