logo

Einschränkungen der referenziellen Integrität im DBMS

Eine referenzielle Integritätsbeschränkung wird auch als bezeichnet Fremdschlüsseleinschränkung . Ein Fremdschlüssel ist ein Schlüssel, dessen Werte vom Primärschlüssel einer anderen Tabelle abgeleitet werden.

Die Tabelle, aus der die Werte abgeleitet werden, heißt Master oder Referenziert Tabelle und die Tabelle, in die Werte entsprechend eingefügt werden, nennt man Kind oder Referenzierung Tabelle, Mit anderen Worten, wir können sagen, dass die Tabelle die enthält Unbekannter Schlüssel heißt das Kindertisch , und die Tabelle, die die enthält Primärschlüssel/Kandidatenschlüssel heißt das referenzierte oder übergeordnete Tabelle . Wenn wir über das relationale Datenbankmodell sprechen, kann der Kandidatenschlüssel als eine Reihe von Attributen definiert werden, die null oder mehr Attribute haben können.

Die Syntax der Master-Tabelle oder der referenzierten Tabelle lautet:

Java-Methode überschreiben
 CREATE TABLE Student (Roll int PRIMARY KEY, Name varchar(25) , Course varchar(10) ); 

Hier fungiert die Spalte Roll als Primärschlüssel, Dies hilft bei der Ableitung des Werts des Fremdschlüssels in der untergeordneten Tabelle.

Einschränkung der referenziellen Integrität

Die Syntax der untergeordneten Tabelle oder der referenzierenden Tabelle lautet:

 CREATE TABLE Subject (Roll int references Student, SubCode int, SubName varchar(10) ); 

Einschränkung der referenziellen Integrität

In der obigen Tabelle fungiert die Spalte Roll als Unbekannter Schlüssel, deren Werte mithilfe des Rollwerts des Primärschlüssels aus der Mastertabelle abgeleitet werden.

Fremdschlüsseleinschränkung ODER Einschränkung der referenziellen Integrität.

Es gibt zwei Einschränkungen der referenziellen Integrität:

Einschränkung einfügen: Der Wert kann nicht in die CHILD-Tabelle eingefügt werden, wenn der Wert nicht in der MASTER-Tabelle liegt

Einschränkung löschen: Der Wert kann nicht aus der MASTER-Tabelle gelöscht werden, wenn der Wert in der CHILD-Tabelle liegt

Angenommen, Sie möchten Roll = 05 mit anderen Spaltenwerten in der SUBJECT-Tabelle einfügen, dann wird Ihnen sofort eine Fehlermeldung angezeigt: Fremdschlüsseleinschränkung verletzt ' d. h. beim Ausführen eines Einfügebefehls als:

In SUBJECT-Werte einfügen (5, 786, OS); wird von SQL aufgrund der Einfügungsbeschränkung nicht berücksichtigt (Da Sie keinen Wert in eine untergeordnete Tabelle einfügen können, wenn der Wert nicht in der Haupttabelle liegt, da Roll = 5 in der Haupttabelle nicht vorhanden ist, ist es daher nicht zulässig, Roll = 5 in die untergeordnete Tabelle einzugeben.)

Wenn Sie Roll = 4 aus der STUDENT-Tabelle löschen möchten, wird ebenfalls sofort eine Fehlermeldung angezeigt: Fremdschlüsseleinschränkung verletzt ' d. h. beim Ausführen eines Löschbefehls als:

Aus STUDENT löschen, wobei Roll = 4; wird von SQL aufgrund der Löschbeschränkung nicht berücksichtigt. ( Da Sie den Wert nicht aus der Master-Tabelle löschen können, wenn der Wert in der untergeordneten Tabelle liegt, da Roll = 5 in der untergeordneten Tabelle vorhanden ist, ist es daher nicht zulässig, Roll = 5 aus der Master-Tabelle zu löschen Irgendwie haben wir es geschafft, Roll = 5 zu löschen, dann ist Roll = 5 in der untergeordneten Tabelle verfügbar, was letztendlich gegen die Einfügungsbeschränkung verstößt.

Wer hat die Schule gemacht?

ON CASCADE LÖSCHEN.

Gemäß Löschbeschränkung: Der Wert kann nicht aus der MASTER-Tabelle gelöscht werden, wenn der Wert in der CHILD-Tabelle liegt. Als nächstes stellt sich die Frage: Können wir den Wert aus der Mastertabelle löschen, wenn der Wert in der untergeordneten Tabelle liegt, ohne die Löschbeschränkung zu verletzen? d. h. in dem Moment, in dem wir den Wert aus der Mastertabelle löschen, sollte der entsprechende Wert auch aus der untergeordneten Tabelle gelöscht werden.

Die Antwort auf die obige Frage lautet JA. Wir können den Wert aus der Master-Tabelle löschen, wenn der Wert in der untergeordneten Tabelle liegt, ohne die Löschbeschränkung zu verletzen. Wir müssen beim Erstellen der untergeordneten Tabelle geringfügige Änderungen vornehmen, z. B. durch Hinzufügen auf Löschkaskade .

Tabellensyntax

teilweise Abhängigkeit
 CREATE TABLE Subject (Roll int references Student on delete cascade, SubCode int, SubName varchar(10) ); 

In der obigen Syntax haben wir direkt nach dem Referenzschlüsselwort (das zum Erstellen eines Fremdschlüssels verwendet wird) eine Löschkaskade hinzugefügt. Durch das Hinzufügen einer solchen können wir nun den Wert aus der Mastertabelle löschen, wenn der Wert in der untergeordneten Tabelle liegt, ohne gegen die Löschung zu verstoßen Zwang. Wenn Sie nun Roll = 5 aus der Master-Tabelle löschen wollten, obwohl Roll = 5 in der untergeordneten Tabelle liegt, ist dies möglich, da in dem Moment, in dem Sie den Befehl zum Löschen von Roll = 5 aus der Master-Tabelle geben, die Zeile mit Roll = 5 aus der untergeordneten Tabelle werden ebenfalls gelöscht.

Einschränkung der referenziellen Integrität
Einschränkung der referenziellen Integrität

Die obigen beiden Tabellen STUDENT und SUBJECT mit jeweils vier Werten werden angezeigt. Nehmen wir nun an, Sie möchten Roll = 4 aus der Tabelle STUDENT(Master) löschen, indem Sie einen SQL-Befehl schreiben: aus STUDENT löschen, wobei Roll = 4;

In dem Moment, in dem SQL den obigen Befehl ausführt, wird auch die Zeile mit Roll = 4 aus der SUBJECT(Child)-Tabelle gelöscht, das Ergebnis STUDENT und THEMA Die Tabelle sieht folgendermaßen aus:

Einschränkung der referenziellen Integrität
Einschränkung der referenziellen Integrität

Aus den beiden oben genannten Tabellen STUDENT und SUBJECT können Sie ersehen, dass in beiden Tabellen Roll = 4 auf einmal gelöscht wird, ohne die Löschbeschränkung zu verletzen.

Manchmal wird in Interviews eine sehr wichtige Frage gestellt: Kann ein Fremdschlüssel NULL-Werte haben?

Die Antwort auf die obige Frage lautet JA, er kann NULL-Werte haben, wohingegen der Primärschlüssel auf keinen Fall NULL sein kann. Um die obige Frage praktisch zu verstehen, wollen wir uns im Folgenden mit dem Konzept des Löschens von Nullen befassen.

ON DELETE NULL.

Gemäß Löschbeschränkung: Der Wert kann nicht aus der MASTER-Tabelle gelöscht werden, wenn der Wert in der CHILD-Tabelle liegt. Als nächstes stellt sich die Frage: Können wir den Wert aus der Mastertabelle löschen, wenn der Wert in der untergeordneten Tabelle liegt, ohne die Löschbeschränkung zu verletzen? d. h. in dem Moment, in dem wir den Wert aus der Mastertabelle löschen, sollte der entsprechende Wert auch aus der untergeordneten Tabelle gelöscht werden oder durch den NULL-Wert ersetzt werden.

Die Antwort auf die obige Frage lautet JA. Wir können den Wert aus der Mastertabelle löschen, wenn der Wert in der untergeordneten Tabelle liegt, ohne die Löschbeschränkung zu verletzen, indem wir NULL in den Fremdschlüssel einfügen. Wir müssen beim Erstellen der untergeordneten Tabelle geringfügige Änderungen vornehmen, d. h. beim Hinzufügen beim Löschen null .

Tabellensyntax:

 CREATE TABLE Subject (Roll int references Student on delete null, SubCode int, SubName varchar(10) ); 

In der obigen Syntax haben wir direkt nach dem Schlüsselwort „references“ (das zum Erstellen eines Fremdschlüssels verwendet wird) „delete null“ hinzugefügt. Indem wir nun ein solches hinzufügen, können wir den Wert aus der Mastertabelle löschen, wenn der Wert in der untergeordneten Tabelle liegt, ohne gegen die Löschung zu verstoßen Zwang. Wenn Sie nun Roll = 4 aus der Master-Tabelle löschen möchten, obwohl Roll =4 in der untergeordneten Tabelle liegt, ist dies möglich, da in dem Moment, in dem Sie den Befehl zum Löschen von Roll = 4 aus der Master-Tabelle geben, die Zeile mit Roll = 4 aus der untergeordneten Tabelle wird durch einen NULL-Wert ersetzt.

Java-Utility-Datum
Einschränkung der referenziellen Integrität
Einschränkung der referenziellen Integrität

Die obigen beiden Tabellen STUDENT und SUBJECT mit jeweils vier Werten werden angezeigt. Nehmen wir nun an, Sie möchten Roll = 4 aus der Tabelle STUDENT(Master) löschen, indem Sie einen SQL-Befehl schreiben: aus STUDENT löschen, wobei Roll = 4;

In dem Moment, in dem SQL den obigen Befehl ausführt, wird die Zeile mit Roll = 4 aus der SUBJECT(Child)-Tabelle durch einen NULL-Wert ersetzt, das Ergebnis STUDENT und THEMA Die Tabelle sieht folgendermaßen aus:

Einschränkung der referenziellen Integrität
Einschränkung der referenziellen Integrität

Anhand der beiden obigen Tabellen STUDENT und SUBJECT können Sie erkennen, dass in der Tabelle STUDENT Roll = 4 gelöscht wird, während der Wert von Roll = 4 in der SUBJECT-Tabelle durch NULL ersetzt wird. Dies beweist, dass der Fremdschlüssel Nullwerte haben kann. Wenn in der SUBJECT-Tabelle die Spalte Roll neben dem Fremdschlüssel auch der Primärschlüssel ist, können wir in diesem Fall keinen Fremdschlüssel mit NULL-Werten erstellen.