Een externe sleutel verschilt van een supersleutel, kandidaatsleutel of primaire sleutel, omdat een externe sleutel wordt gebruikt om twee tabellen aan elkaar te koppelen of om connectiviteit tussen de twee te creëren.
Hier, in deze sectie, zullen we de externe sleutel en het gebruik ervan bespreken en enkele voorbeelden bekijken die ons zullen helpen de werking en het gebruik van de externe sleutel te begrijpen. We zullen ook de praktische implementatie ervan in een database zien, dat wil zeggen het maken en verwijderen van een externe sleutel in een tabel.
Wat is een buitenlandse sleutel
Een externe sleutel is de sleutel die wordt gebruikt om twee tabellen via de primaire sleutel aan elkaar te koppelen. Het betekent dat de kolommen van de ene tabel verwijzen naar het primaire sleutelattribuut van de andere tabel. Het betekent verder dat als een attribuut is ingesteld als een primair sleutelattribuut, het in een andere tabel zal werken als een refererend sleutelattribuut. Maar je moet weten dat een externe sleutel niets te maken heeft met de primaire sleutel.
Gebruik van een buitenlandse sleutel
Het gebruik van een externe sleutel is eenvoudigweg het koppelen van de attributen van twee tabellen met behulp van een primair sleutelattribuut. Het wordt dus gebruikt voor het creëren en onderhouden van de relatie tussen de twee relaties.
Voorbeeld van een buitenlandse sleutel
Laten we een voorbeeld bespreken om de werking van een externe sleutel te begrijpen.
java-typevariabele
Beschouw twee tabellen Student En Afdeling met hun respectievelijke attributen zoals weergegeven in de onderstaande tabelstructuur:
In de tabellen is één kenmerk, zoals u kunt zien, gebruikelijk Stud_Id , maar er gelden voor beide tabellen verschillende belangrijke beperkingen. In de tabel Student is het veld Stud_Id a hoofdsleutel omdat het op unieke wijze alle andere velden van de tabel Student identificeert. Aan de andere kant is Stud_Id een vreemde sleutel attribuut voor de Afdelingstabel, omdat het fungeert als een primair sleutelattribuut voor de Student-tabel. Het betekent dat zowel de Student- als de Afdelingstabel aan elkaar zijn gekoppeld vanwege het Stud_Id attribuut.
In de onderstaande afbeelding kunt u de volgende structuur van de relatie tussen de twee tabellen bekijken.
Opmerking: Referentiële integriteit in DBMS is ontwikkeld op basis van het concept van de externe sleutel. Het is duidelijk dat een primaire sleutel een op zichzelf staande sleutel is en dat een externe sleutel altijd verwijst naar een primaire sleutel in een andere tabel, waarin de tabel die de primaire sleutel bevat bekend staat als de tabel waarnaar wordt verwezen of de bovenliggende tabel voor de andere tabel die de primaire sleutel bevat. heeft de buitenlandse sleutel.
Een Foreign Key-beperking creëren
Op TABEL MAKEN
Hieronder vindt u de syntaxis waarmee we het maken van een externe sleutel in een tabel kunnen leren:
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) );
Op deze manier kunnen we dus een externe sleutel instellen voor een tabel in de MYSQL-database.
selectie html
Als u een externe sleutel maakt voor een tabel in een SQL- of Oracle-server, werkt de volgende syntaxis:
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) );
Op ALTER TABEL
Hieronder volgt de syntaxis voor het maken van een externe sleutelbeperking voor ALTER TABLE:
ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id);
Vreemde sleutel laten vallen
Om een externe sleutel te verwijderen, is er een hieronder beschreven syntaxis die kan worden gebruikt:
ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment;
Op deze manier kunnen we dus een externe sleutel achterlaten met behulp van de ALTER TABLE in de MYSQL-database.
Natasha Dalal
Punt om te onthouden
Wanneer u de externe sleutel laat vallen, moet u zorgen voor de integriteit van de tabellen die via een externe sleutel zijn verbonden. Als u wijzigingen aanbrengt in één tabel en de integriteit van beide tabellen verstoort, kunnen bepaalde fouten worden weergegeven als gevolg van onjuiste connectiviteit tussen de twee tabellen.
Referentiële acties
Er zijn enkele acties die verband houden met de acties die door de houder van de buitenlandse sleuteltabel worden ondernomen:
1) Cascade
Wanneer we rijen in de bovenliggende tabel verwijderen (dat wil zeggen degene die de primaire sleutel bevat), worden dezelfde kolommen in de andere tabel (dat wil zeggen degene die een externe sleutel bevat) ook verwijderd. De actie staat dus bekend als Cascade .
2) Stel NULL in
Java-programmeerpatronen
Een dergelijke referentiële actie handhaaft de referentiële integriteit van beide tabellen. Wanneer we een rij waarnaar wordt verwezen in de bovenliggende/tabel waarnaar wordt verwezen, in de onderliggende tabel (tabel met een externe sleutel) manipuleren/verwijderen, wordt de waarde van een dergelijke verwijzende rij ingesteld op NULL. Een dergelijke uitgevoerde referentiële actie staat bekend als Stel NULL in .
3) Stel DEFAULT in
Een dergelijke actie vindt plaats wanneer de waarden in de rij waarnaar wordt verwezen in de bovenliggende tabel worden bijgewerkt, of wanneer de rij wordt verwijderd. De waarden in de onderliggende tabel worden ingesteld op de standaardwaarden van de kolom.
4) Beperken
Het is de beperkingsbeperking waarbij de waarde van de rij waarnaar wordt verwezen in de bovenliggende tabel niet kan worden gewijzigd of verwijderd, tenzij er niet naar wordt verwezen door de externe sleutel in de onderliggende tabel. Het is dus een normale referentiële actie van een externe sleutel.
5) Geen actie
Hoe een array in Java te initialiseren
Het is ook een beperkingsbeperking van de externe sleutel, maar wordt alleen geïmplementeerd nadat is geprobeerd de rij waarnaar wordt verwezen in de bovenliggende tabel te wijzigen of te verwijderen.
6) Triggers
Al deze en andere referentiële acties worden in principe geïmplementeerd als triggers waarbij de acties van een externe sleutel veel of bijna vergelijkbaar zijn met door de gebruiker gedefinieerde triggers. In sommige gevallen worden de bestelde referentiële acties echter vervangen door hun equivalente, door de gebruiker gedefinieerde triggers om een juiste triggeruitvoering te garanderen.