Udenlandske nøgler tillader databaseadministratorer nemt at identificere de forskellige forbindelser, der findes i et SQL-databasestyringssystem.
SQL udfører matematiske operationer på data inden for et databasestyringssystem. Disse databaser indeholder forskellige tabeller, der hver gemmer data om en bestemt enhed. Hvis du har en biludlejningsdatabase, vil en enhed (eller tabel) i databasen være kunder (som gemmer alle personlige data på hver kunde).
Disse databasetabeller indeholder rækker og kolonner, hvor hver række er vært for en post, og hver kolonne indeholder attributspecifikke data.
I et databasestyringssystem skal hver post (eller række) være unik.
Primære nøgler
Selv om betingelsen er, at hver post i en tabel skal være særskilt, er dette ikke altid tilfældet. Fortsætter med eksemplet på biludlejningsdatabasen, hvis databasen indeholder to kunder, der hver har navnet “John Brown”, kunne en John Brown forventes at returnere en Mercedes-Benz, som han ikke gjorde leje.
Oprettelse af en primær nøgle vil mindske denne risiko. I et SQL-databasesystem er en primær nøgle en unik identifikator, der adskiller en post fra en anden.
Derfor skal hver post i et SQL-databasestyringssystem have en primær nøgle.
Brug af primære nøgler i en database
For at inkludere primære nøgler i et databasestyringssystem ved hjælp af SQL kan du blot tilføje det som en normal attribut, når du opretter en ny tabel. Så kundernes tabel indeholder fire attributter (eller kolonner):
- CarOwnerID (som gemmer den primære nøgle)
- Fornavn
- Efternavn
- Telefonnummer
Relaterede: Sådan oprettes en tabel i SQL
Nu vil hver kundeoptegnelse, der kommer ind i databasen, have et unikt identifikationsnummer samt et fornavn, efternavn og telefonnummer. Telefonnummeret er ikke unikt nok til at være en primær nøgle, for selvom det er unikt for en person ad gangen, kan en person nemt ændre deres nummer, hvilket betyder, at det nu vil tilhøre en anden.
En post med et primært nøgleeksempel
/ * opretter en ny post i kundetabellen * /
INDSÆT I KUNDERVÆRDIER
('0004',
'John',
'Brun',
'111-999-5555');
SQL-koden ovenfor tilføjer en ny post til den allerede eksisterende Kunder bord. Tabellen nedenfor viser den nye kundetabel med de to John Brown-poster.
Den udenlandske nøgle
Nu har du primære nøgler, der entydigt adskiller en biludlejning fra en anden. Det eneste problem er, at der i databasen ikke er nogen reel forbindelse mellem hver John Brown og den bil, han lejer.
Derfor findes muligheden for at begå en fejl stadig. Det er her, udenlandske nøgler kommer i spil. Brug af en primær nøgle til at løse problemet med ejerskabstydighed er kun opnåelig, hvis den primære nøgle fungerer som en fremmed nøgle.
Hvad er en fremmed nøgle?
I et SQL-databasesystem er en fremmed nøgle en unik identifikator eller en kombination af unikke identifikatorer, der forbinder to eller flere tabeller i en database.
Af de fire eksisterende SQL-databasestyringssystemer er det relationelle databasestyringssystem det mest populære. Når du beslutter, hvilken tabel i en relationsdatabase der skal have en fremmed nøgle, skal du først identificere, hvilken tabel der er emnet, og hvilket objekt der er i deres forhold.
At gå tilbage til databasen med biludlejning for at forbinde hver kunde til den rigtige bil skal du forstå, at en kunde (motivet) lejer en bil (objektet). Derfor skal den fremmede nøgle være i biltabellen.
SQL-koden, der genererer en tabel med en fremmed nøgle, adskiller sig lidt fra normen.
Oprettelse af en tabel med et udenlandsk nøgleeksempel
/ * opretter en ny biltabel i biludlejningsdatabasen * /
OPRET TABEL Biler
(
LicenseNummer varchar (30) IKKE NULL PRIMÆR NØGLE,
CarType varchar (30) IKKE NULL,
CustomerID varchar (30) UDENLANDSKE KEY REFERENCER Kunder (CustomerID)
);
Som du kan se i koden ovenfor, skal en fremmed nøgle identificeres eksplicit som sådan sammen med en henvisning til den primære nøgle, der er forbundet til den nye tabel.
Relaterede: The Essential SQL Commands Cheat Sheet for Beginners
For at føje en post til den nye tabel skal du sikre dig, at værdien i det udenlandske nøglefelt matcher værdien i det primære nøglefelt i den oprindelige tabel.
Tilføjelse af en post med et udenlandsk nøgleeksempel
/ * opretter en ny post i biltabellen * /
INDSÆT I BILVÆRDIER
('100012',
'Mercedes-Benz',
'0004');
Koden ovenfor opretter en ny post i den nye Biler tabel, hvilket giver følgende resultat.
Biler tabel
Fra tabellen ovenfor kan du identificere den korrekte John Brown, der lejer en Mercedes-Benz ved den udenlandske nøgle i posten.
Advance udenlandske nøgler
Der er to andre måder at bruge en fremmed nøgle i en database på.
Hvis du ser tilbage på definitionen af en fremmed nøgle ovenfor, finder du ud af, at der står, at en fremmed nøgle kan være en unik identifikator eller en kombination af unikke identifikatorer.
Når vi går tilbage til eksemplet med biludlejningsdatabasen, ser du, at oprettelse af en ny post (af den samme bil) hver gang en kunde lejer den bil, besejrer formålet med Biler bord. Hvis bilerne er til salg og sælges til en enkelt kunde en gang, er den eksisterende database perfekt; men i betragtning af at bilerne lejer, er der en bedre måde at repræsentere disse data på.
Kompositnøgler
En sammensat nøgle har to eller flere unikke identifikatorer. I en relationsdatabase vil der være tilfælde, hvor brugen af en enkelt fremmed nøgle ikke i tilstrækkelig grad repræsenterer de forhold, der findes i denne database.
I biludlejningseksemplet er den mest praktiske tilgang at oprette en ny tabel, der gemmer lejedetaljerne. For at oplysningerne i biludlejningstabellen skal være nyttige, skal den oprette forbindelse til både bil- og kundetabellerne.
Oprettelse af et bord med sammensatte udenlandske nøgler
/ * opretter en CarRental-tabel i biludlejningsdatabasen * /
Opret TABEL CarRental
(
Dato lejet DATO IKKE NULL,
LicenseNumber varchar (30) IKKE NULL UDENLANDSKE KEY REFERENCER Biler (LicenseNumber),
CustomerID varchar (30) IKKE NULL UDENLANDSKE NØGLEREFERENCER Kunder (CustomerID),
PRIMÆR NØGLE (DateRented, LicenseNumber, CustomerID)
);
Koden ovenfor viser et vigtigt punkt; selvom en tabel i en SQL-database kan have mere end en fremmed nøgle, kan den kun have en enkelt primær nøgle. Dette skyldes, at der kun skal være en unik måde at identificere en post på.
Det er nødvendigt at kombinere alle tre attributter i tabellen for at have en unik nøgle. En kunde kan leje mere end en bil samme dag (altså Kunde ID og Dato lejet er ikke en god kombination) kan mere end én kunde også leje den samme bil samme dag (så Licens nummer og Dato lejet er ikke en god kombination).
Dog oprettelsen af en sammensat nøgle, der fortæller hvilken kunde, hvilken bil og på hvilken dag, der gør en fremragende unik nøgle. Denne unikke nøgle repræsenterer både en sammensat fremmed nøgle og en sammensat primær nøgle.
Udenlandske primære nøgler
Åh ja, udenlandske primære nøgler slutter. Selvom der ikke er noget officielt navn til det, kan en fremmed nøgle også være en primær nøgle i samme tabel. Dette sker, når du opretter en ny tabel, der indeholder specialiserede data om en eksisterende enhed (eller optager i en anden tabel).
Sig Fred (som arbejder hos biludlejningsfirmaet) er i virksomhedens database under medarbejderbordet. Efter et par år bliver han supervisor og føjes til supervisor-tabellen.
Fred er stadig medarbejder og vil stadig have det samme id-nummer. Så Freds medarbejder-id er nu i vejledertabellen som en fremmed nøgle, som også bliver en primær indtast tabellen (da det ikke giver mening at oprette et nyt id-nummer til Fred, nu hvor han er supervisor).
Nu kan du identificere udenlandske nøgler i SQL-databaser
Udenlandske nøgler forbinder forskellige tabeller i en SQL-database. Fra denne artikel kan du se, hvad en fremmed nøgle er, hvordan den fungerer, og hvorfor det er vigtigt at have dem i en database. Du forstår også de grundlæggende og endnu mere komplekse former for udenlandske nøgler.
Hvis du synes, at udenlandske nøgler er interessante, har du en feltdag, når du begynder at bruge projekt- og markeringsfunktionerne til at forespørge om dine SQL-databaser.
Kom i gang med SQL-relationsdatabaser ved at forstå projekt- og udvælgelsesoperationerne med disse eksempler.
Læs Næste
- Programmering
- Programmering
- SQL
- database
Kadeisha Kean er en full-stack softwareudvikler og teknisk / teknologiforfatter. Hun har den tydelige evne til at forenkle nogle af de mest komplekse teknologiske begreber; producerer materiale, der let kan forstås af enhver teknologinevner. Hun brænder for at skrive, udvikle interessant software og rejse verden rundt (gennem dokumentarfilm).
Abonner på vores nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Et trin mere !!!
Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.