Met externe sleutels kunnen databasebeheerders gemakkelijk de verschillende verbindingen identificeren die bestaan binnen een SQL-databasebeheersysteem.
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 (die alle persoonlijke gegevens van elke klant zal opslaan).
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 voorwaarde is dat elk record in een tabel verschillend moet zijn, is dit niet altijd het geval. Verdergaan met het voorbeeld van de autoverhuurdatabase, als de database elk twee klanten bevat de naam "John Brown" hebben, kan van een John Brown worden verwacht dat hij een Mercedes-Benz retourneert die hij niet had huur.
Door een primaire sleutel te maken, wordt dit risico beperkt. In een SQL-databasebeheersysteem is een primaire sleutel een unieke identificatie die het ene record van het andere onderscheidt.
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 bevat dus vier attributen (of kolommen):
- CarOwnerID (waarin de primaire sleutel wordt opgeslagen)
- Voornaam
- Achternaam
- Telefoonnummer
Verwant: Hoe maak je een tabel 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 voorbeeld van een primaire sleutel
/ * maakt een nieuw record aan in de klantentabel * /
VOEG IN DE WAARDEN VAN DE KLANT IN
('0004',
'John',
'Bruin',
'111-999-5555');
De bovenstaande SQL-code voegt een nieuw record toe aan het reeds bestaande Klanten tafel. De onderstaande tabel toont de nieuwe klantentabel met de twee John Brown-records.
De externe sleutel
Nu heb je primaire sleutels die de ene autoverhuurder op unieke wijze onderscheiden van de andere. Het enige probleem is dat er in de database geen echt verband bestaat tussen elke John Brown en de auto die hij huurt.
Daarom bestaat de mogelijkheid om een fout te maken nog steeds. Dit is waar buitenlandse sleutels in het spel komen. Het gebruik van een primaire sleutel om het probleem van eigendomsambiguïteit op te lossen is alleen haalbaar als de primaire sleutel ook dienst doet als externe sleutel.
Wat is een externe 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 meest populaire. Wanneer u beslist welke tabel in een relationele database een externe sleutel moet hebben, moet u eerst bepalen welke tabel het onderwerp is en welk object in hun relatie.
Als u teruggaat 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 zich in de autotabel bevinden.
De SQL-code die een tabel met een externe sleutel genereert, wijkt enigszins af van de norm.
Een tabel maken met een voorbeeld van een externe sleutel
/ * maakt een nieuwe wagentabel aan in de autoverhuurdatabase * /
CREËER TAFELauto's
(
LicenseNumber varchar (30) NOT NULL PRIMAIRE SLEUTEL,
CarType varchar (30) NOT NULL,
CustomerID varchar (30) BUITENLANDSE SLEUTELREFERENTIES Klanten (CustomerID)
);
Zoals u 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 wordt verbonden met de nieuwe tabel.
Verwant: De essentiële SQL-opdrachten Cheat Sheet voor beginners
Als u een record aan de nieuwe tabel wilt toevoegen, moet u ervoor zorgen dat de waarde in het veld met de externe sleutel overeenkomt met de waarde in het veld met de primaire sleutel van de oorspronkelijke tabel.
Voorbeeld van een record met een externe sleutel toevoegen
/ * maakt een nieuw record aan in de autotabel * /
INVOEGEN IN AUTO WAARDEN
('100012',
'Mercedes-Benz',
'0004');
De bovenstaande code maakt een nieuw record in het nieuwe Auto's tabel, wat het volgende resultaat oplevert.
Cars Tafel
Uit de bovenstaande tabel kunt u de juiste John Brown die een Mercedes-Benz huurt, identificeren aan de hand van de externe sleutel in het record.
Voorschot vreemde sleutels
Er zijn twee andere manieren om een externe sleutel in een database te gebruiken.
Als u terugkijkt op de definitie van een externe sleutel hierboven, zult u zien dat een externe sleutel een unieke ID of een combinatie van unieke ID's kan zijn.
Als u teruggaat naar het voorbeeld van de autoverhuurdatabase, zult u zien 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 één keer 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 sleutels
Een samengestelde sleutel heeft twee of meer unieke ID's. In een relationele database zijn er gevallen waarin het gebruik van een enkele externe sleutel niet voldoende de relaties vertegenwoordigt die binnen die database bestaan.
In het autoverhuurvoorbeeld is de meest praktische benadering om een nieuwe tabel te maken waarin de huurgegevens zijn opgeslagen. Om de informatie in de autoverhuur-tabel nuttig te laten zijn, moet deze verbinding maken met zowel de auto- als de klantentafel.
Een tabel maken met samengestelde externe sleutels
/ * maakt een CarRental-tabel aan in de autoverhuurdatabase * /
CREËER TABEL CarRental
(
DateRented DATUM NIET NULL,
LicenseNumber varchar (30) NOT NULL FOREIGN KEY REFERENCES Cars (LicenseNumber),
CustomerID varchar (30) NOT NULL FOREIGN KEY REFERENCES Customers (CustomerID),
PRIMAIRE SLEUTEL (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 primaire sleutel hebben. Dit komt omdat er maar één unieke manier mag 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 op dezelfde dag meer dan één auto huren (dus Klanten ID en Datum verhuurd is geen goede combinatie) meer dan één klant kan ook dezelfde auto op dezelfde dag huren (dus Licentienummer en Datum verhuurd is geen goede combinatie).
Het creëren van een samengestelde sleutel die vertelt welke klant, welke auto en op welke dag een uitstekende unieke sleutel is. Deze unieke sleutel vertegenwoordigt zowel een samengestelde externe sleutel als een samengestelde primaire sleutel.
Buitenlandse primaire sleutels
Oh ja, buitenlandse primaire sleutels worden wel afgesloten. Hoewel er geen officiële naam voor is, kan een externe sleutel ook een primaire sleutel in dezelfde tabel zijn. 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 medewerkerstafel staat. Na een paar jaar wordt hij supervisor en wordt hij toegevoegd aan de supervisortafel.
Fred is nog steeds een werknemer en zal nog steeds hetzelfde ID-nummer hebben. Dus de medewerker-ID van Fred staat nu in de supervisortabel als een externe sleutel die ook een primaire sleutel zal worden toets die tabel in (aangezien het geen zin heeft om een nieuw id-nummer voor Fred te maken nu hij een supervisor is).
Nu kunt u externe sleutels in SQL-databases identificeren
Vreemde 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 basisvormen en zelfs nog complexere vormen van externe sleutels.
Als u buitenlandse sleutels interessant vindt, heeft u een velddag waarop u de project- en selectiebewerkingen gaat gebruiken om uw SQL-databases te doorzoeken.
Maak kennis met relationele databases van SQL door de bewerkingen Project en Selectie te begrijpen met deze voorbeelden.
Lees Volgende
- Programmeren
- Programmeren
- SQL
- database
Kadeisha Kean is een full-stack softwareontwikkelaar en technisch / technologisch schrijver. Ze heeft het onderscheidende vermogen om enkele van de meest complexe technologische concepten te vereenvoudigen; materiaal produceren dat gemakkelijk kan worden begrepen door elke beginneling op het gebied van technologie. Ze is gepassioneerd door schrijven, interessante software ontwikkelen en de wereld rondreizen (via documentaires).
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Nog een stap…!
Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.