Wat zijn buitenlandse sleutels in SQL-databases?

Wat zijn buitenlandse sleutels in SQL-databases?

Met externe sleutels kunnen databasebeheerders eenvoudig de verschillende verbindingen identificeren die binnen een SQL-databasebeheersysteem bestaan.





SQL voert wiskundige bewerkingen uit op gegevens binnen een databasebeheersysteem. Deze databases bevatten verschillende tabellen die elk gegevens over een specifieke entiteit opslaan. Als u een autoverhuurdatabase heeft, zal een entiteit (of tabel) in die database klanten zijn (waarin alle persoonlijke gegevens van elke klant worden opgeslagen).





Deze databasetabellen bevatten rijen en kolommen, waarbij elke rij een record bevat en elke kolom kenmerkspecifieke gegevens bevat.





In een databasebeheersysteem moet elke record (of rij) uniek zijn.

Primaire sleutels

Hoewel de bepaling is dat elk record in een tabel verschillend moet zijn, is dit niet altijd het geval. Als we verder gaan met het voorbeeld van de autoverhuurdatabase, als de database twee klanten bevat die elk de naam John Brown hebben, kan van een John Brown worden verwacht dat hij een Mercedes-Benz teruggeeft die hij niet heeft gehuurd.



Door een primaire sleutel te maken, wordt dit risico beperkt. In een SQL-databasebeheersysteem is een primaire sleutel een unieke id die het ene record van het andere onderscheidt.

beste dingen om te doen met een frambozenpi

Daarom moet elk record in een SQL-databasebeheersysteem een ​​primaire sleutel hebben.





Primaire sleutels gebruiken in een database

Om primaire sleutels op te nemen in een databasebeheersysteem met behulp van SQL, kunt u deze eenvoudig toevoegen als een normaal kenmerk bij het maken van een nieuwe tabel. De klantentabel zal dus vier attributen (of kolommen) bevatten:

  • CarOwnerID (waarin de primaire sleutel wordt opgeslagen)
  • Voornaam
  • Achternaam
  • Telefoonnummer

Verwant: Een tabel maken in SQL





Nu heeft elk klantrecord dat de database binnenkomt een uniek identificatienummer, evenals een voornaam, achternaam en telefoonnummer. Het telefoonnummer is niet uniek genoeg om een ​​primaire sleutel te zijn, want hoewel het uniek is voor één persoon tegelijk, kan een persoon zijn nummer gemakkelijk wijzigen, wat betekent dat het nu van iemand anders zou zijn.

Een record met een primaire sleutel Voorbeeld

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

De bovenstaande SQL-code voegt een nieuw record toe aan de reeds bestaande Klanten tafel. Onderstaande tabel toont de nieuwe klantentabel met de twee John Brown records.

De buitenlandse sleutel

Nu heb je primaire sleutels die de ene autoverhuurder op unieke wijze van de andere onderscheiden. Het enige probleem is dat er in de database geen echt verband is tussen elke John Brown en de auto die hij huurt.

De mogelijkheid om een ​​fout te maken bestaat dus nog steeds. Dit is waar buitenlandse sleutels in het spel komen. Het gebruik van een primaire sleutel om het probleem van ambiguïteit van eigendom op te lossen is alleen haalbaar als de primaire sleutel ook dienst doet als externe sleutel.

Wat is een buitenlandse sleutel?

In een SQL-databasebeheersysteem is een externe sleutel een unieke id of een combinatie van unieke id's die twee of meer tabellen in een database met elkaar verbinden.

Van de vier bestaande SQL-databasebeheersystemen is het relationele databasebeheersysteem het populairst. Wanneer u beslist welke tabel in een relationele database een externe sleutel moet hebben, moet u eerst bepalen welke tabel het onderwerp is en welke het object in hun relatie is.

Om terug te gaan naar de autoverhuurdatabase, om elke klant aan de juiste auto te koppelen, moet u begrijpen dat een klant (het onderwerp) een auto huurt (het object). Daarom moet de externe sleutel in de tabel met auto's staan.

De SQL-code die een tabel met een externe sleutel genereert, wijkt iets af van de norm.

Een tabel maken met een Foreign Key Voorbeeld

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Zoals je in de bovenstaande code kunt zien, moet een externe sleutel expliciet als zodanig worden geïdentificeerd, samen met een verwijzing naar de primaire sleutel die aan de nieuwe tabel wordt gekoppeld.

hoe kan ik apps naar SD-kaart verplaatsen

Verwant: De essentiële SQL-commando's Cheatsheet voor beginners

Om een ​​record aan de nieuwe tabel toe te voegen, moet u ervoor zorgen dat de waarde in het veld met de refererende sleutel overeenkomt met de waarde in het primaire sleutelveld van de oorspronkelijke tabel.

Een record toevoegen met een buitenlandse sleutel Voorbeeld

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

De bovenstaande code maakt een nieuw record in de nieuwe auto's tabel, wat het volgende resultaat oplevert.

Auto's Tafel

In de bovenstaande tabel kunt u de juiste John Brown die een Mercedes-Benz huurt identificeren aan de hand van de buitenlandse sleutel in het record.

Geavanceerde buitenlandse sleutels

Er zijn twee andere manieren om een ​​externe sleutel in een database te gebruiken.

Als je terugkijkt op de definitie van een refererende sleutel hierboven, zul je zien dat een refererende sleutel een unieke identifier of een combinatie van unieke identifiers kan zijn.

Als u teruggaat naar het voorbeeld van de autoverhuurdatabase, ziet u dat het creëren van een nieuw record (van dezelfde auto) elke keer dat een klant die auto huurt, het doel van de auto's tafel. Als de auto's te koop staan ​​en eenmalig aan één klant worden verkocht, is de bestaande database perfect; maar aangezien de auto's verhuurd zijn, is er een betere manier om deze gegevens weer te geven.

Samengestelde toetsen

Een samengestelde sleutel heeft twee of meer unieke identifiers. In een relationele database zullen er gevallen zijn waarin het gebruik van een enkele externe sleutel niet voldoende de relaties weergeeft die binnen die database bestaan.

In het voorbeeld van autoverhuur is de meest praktische benadering om een ​​nieuwe tabel te maken waarin de huurgegevens worden opgeslagen. Om de informatie in de autoverhuurtabel nuttig te maken, moet deze verbinding maken met zowel de auto- als de klantentabellen.

Een tabel maken met samengestelde externe sleutels

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

De bovenstaande code geeft een belangrijk punt weer; hoewel een tabel in een SQL-database meer dan één externe sleutel kan hebben, kan deze slechts één enkele primaire sleutel hebben. Er mag namelijk maar één unieke manier zijn om een ​​record te identificeren.

Het is noodzakelijk om alle drie de attributen in de tabel te combineren om een ​​unieke sleutel te hebben. Een klant kan meer dan één auto op dezelfde dag huren (dus Klanten ID en Datum verhuurd is geen goede combinatie) meer dan één klant kan dezelfde auto ook op dezelfde dag huren (dus Licentienummer en Datum verhuurd geen goede combinatie).

Het creëren van een samengestelde sleutel die vertelt welke klant, welke auto en op welke dag maakt echter een uitstekende unieke sleutel. Deze unieke sleutel vertegenwoordigt zowel een samengestelde externe sleutel als een samengestelde primaire sleutel.

waarom kan ik mezelf niet zien op skype

Buitenlandse primaire sleutels

Oh ja, buitenlandse primaire sleutels sluiten af. Hoewel er geen officiële naam voor is, kan een externe sleutel ook een primaire sleutel zijn in dezelfde tabel. Dit gebeurt wanneer u een nieuwe tabel maakt die gespecialiseerde gegevens bevat over een bestaande entiteit (of record in een andere tabel).

Stel dat Fred (die bij het autoverhuurbedrijf werkt) in de database van het bedrijf onder de werknemerstabel staat. Na een paar jaar wordt hij supervisor en wordt hij toegevoegd aan de supervisortabel.

Fred is nog steeds een werknemer en zal nog steeds hetzelfde id-nummer hebben. Dus Fred's werknemer-ID staat nu in de supervisortabel als een externe sleutel die ook een primaire sleutel in die tabel zal worden (omdat het geen zin heeft om een ​​nieuw ID-nummer voor Fred aan te maken nu hij een supervisor is).

Nu kunt u buitenlandse sleutels identificeren in SQL-databases

Buitenlandse sleutels verbinden verschillende tabellen binnen een SQL-database. In dit artikel kunt u zien wat een externe sleutel is, hoe deze werkt en waarom het belangrijk is om ze in een database te hebben. Je begrijpt ook de basis, en zelfs meer complexe, vormen van buitenlandse sleutels.

Als u denkt dat externe sleutels interessant zijn, krijgt u een velddag waarop u de project- en selectiebewerkingen gaat gebruiken om uw SQL-databases te doorzoeken.

Deel Deel Tweeten E-mail Leer hoe u de project- en selectiebewerkingen in SQL kunt gebruiken

Krijg grip op relationele SQL-databases door met deze voorbeelden de project- en selectiebewerkingen te begrijpen.

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Programmeren
  • SQL
  • database
Over de auteur Kadeisha Kean(21 artikelen gepubliceerd)

Kadeisha Kean is een full-stack softwareontwikkelaar en technisch/technologisch schrijver. Ze heeft het onmiskenbare vermogen om enkele van de meest complexe technologische concepten te vereenvoudigen; materiaal produceren dat gemakkelijk kan worden begrepen door elke technologiebeginner. Ze is gepassioneerd door schrijven, interessante software ontwikkelen en de wereld rondreizen (via documentaires).

Meer van Kadeisha Kean

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren