Hva er utenlandske nøkler i SQL -databaser?

Hva er utenlandske nøkler i SQL -databaser?

Utenlandske nøkler lar databaseadministratorer enkelt identifisere de forskjellige tilkoblingene som finnes i et SQL -databasesystem.





SQL utfører matematiske operasjoner på data i et databasesystem. Disse databasene inneholder forskjellige tabeller som hver lagrer data på en bestemt enhet. Hvis du har en bilutleiedatabase, vil en enhet (eller tabell) i databasen være kunder (som lagrer alle personopplysningene om hver kunde).





Disse databasetabellene inneholder rader og kolonner, hvor hver rad er vert for en post og hver kolonne inneholder attributtspesifikke data.





I et databasesystem bør hver post (eller rad) være unik.

Primære nøkler

Selv om bestemmelsen er at hver post i en tabell skal være forskjellig, er dette ikke alltid tilfelle. Fortsetter med eksempelet på bilutleie-databasen, hvis databasen inneholder to kunder som hver har navnet John Brown, kan det forventes at en John Brown returnerer en Mercedes-Benz som han ikke leide.



Å lage en hovednøkkel vil redusere denne risikoen. I et SQL -databasesystem er en primærnøkkel en unik identifikator som skiller en post fra en annen.

hvorfor har google play -tjenester stoppet

Derfor bør hver post i et SQL -databasesystem ha en primærnøkkel.





Bruke primære nøkler i en database

For å inkludere hovednøkler i et databasesystem ved hjelp av SQL, kan du ganske enkelt legge det til som et normalt attributt når du oppretter en ny tabell. Så kundenes tabell vil inneholde fire attributter (eller kolonner):

  • CarOwnerID (som lagrer hovednøkkelen)
  • Fornavn
  • Etternavn
  • Telefonnummer

I slekt: Hvordan lage en tabell i SQL





Nå vil hver kundepost som kommer inn i databasen ha et unikt identifikasjonsnummer, i tillegg til fornavn, etternavn og telefonnummer. Telefonnummeret er ikke unikt nok til å være en hovednøkkel, for selv om det er unikt for én person om gangen, kan en person enkelt endre nummeret sitt, noe som betyr at det nå ville tilhøre noen andre.

En post med et hovedeksempel

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

SQL-koden ovenfor legger til en ny post i den eksisterende Kunder bord. Tabellen nedenfor viser den nye kundetabellen med de to John Brown -postene.

Den utenlandske nøkkelen

Nå har du hovednøkler som unikt skiller en billeier fra en annen. Det eneste problemet er at det i databasen ikke er noen reell sammenheng mellom hver John Brown og bilen han leier.

Derfor eksisterer muligheten for å gjøre en feil fortsatt. Det er her utenlandske nøkler spiller inn. Å bruke en primærnøkkel for å løse problemet med eierskapstvetydighet er bare oppnåelig hvis hovednøkkelen dobler som en fremmed nøkkel.

Hva er en fremmed nøkkel?

I et SQL -databasesystem er en fremmed nøkkel en unik identifikator eller en kombinasjon av unike identifikatorer som kobler to eller flere tabeller i en database.

Av de fire SQL -databasesystemene som eksisterer, er det relasjonelle databasesystemet det mest populære. Når du bestemmer hvilken tabell i en relasjonsdatabase som skal ha en fremmed nøkkel, bør du først identifisere hvilken tabell som er emnet og som er objektet i deres forhold.

Når du går tilbake til bilutleiedatabasen, for å koble hver kunde til den riktige bilen, må du forstå at en kunde (motivet) leier en bil (objektet). Derfor bør den utenlandske nøkkelen være i bilens bord.

SQL -koden som genererer en tabell med en fremmed nøkkel er litt forskjellig fra normen.

Lage et bord med et fremmed nøkkeleksempel

/* 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)
);

Som du kan se i koden ovenfor, må en fremmed nøkkel eksplisitt identifiseres som sådan, sammen med en referanse til hovednøkkelen som kobles til den nye tabellen.

hva får snapchat -poengsummen din til å stige

I slekt: The Essential SQL Commands Cheat Sheet for Beginners

For å legge til en post i den nye tabellen, må du sørge for at verdien i feltet for utenlandsk nøkkel samsvarer med verdien i hovednøkkelfeltet i den originale tabellen.

Legge til en post med et fremmed nøkkel -eksempel

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

Koden ovenfor oppretter en ny post i den nye Biler tabellen, og gir følgende resultat.

Biler bord

Fra tabellen ovenfor kan du identifisere den riktige John Brown som leier en Mercedes-Benz etter den utenlandske nøkkelen i posten.

Advance Foreign Keys

Det er to andre måter å bruke en fremmed nøkkel i en database.

Hvis du ser tilbake på definisjonen av en fremmed nøkkel ovenfor, finner du at den sier at en fremmed nøkkel kan være en unik identifikator eller en kombinasjon av unike identifikatorer.

Når du går tilbake til eksempelet på bilutleie -databasen, vil du se at det å opprette en ny rekord (av samme bil) hver gang en kunde leier bilen, beseirer formålet med Biler bord. Hvis bilene er til salgs og selges til en enkelt kunde en gang, er den eksisterende databasen perfekt; men gitt at bilene er utleie, er det en bedre måte å representere disse dataene på.

Sammensatte nøkler

En sammensatt nøkkel har to eller flere unike identifikatorer. I en relasjonsdatabase vil det være tilfeller når bruk av en enkelt fremmed nøkkel ikke i tilstrekkelig grad representerer forholdene som eksisterer i databasen.

I bilutleieeksemplet er den mest praktiske tilnærmingen å lage et nytt bord som lagrer husleiedetaljene. For at informasjonen i bilutleiebordet skal være nyttig, må den kobles til både bil- og kundetabellene.

Lage et bord med sammensatte utenlandske nøkler

/* 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)
);

Koden ovenfor viser et viktig poeng; Selv om en tabell i en SQL -database kan ha mer enn én fremmed nøkkel, kan den bare ha en enkelt hovednøkkel. Dette er fordi det bare bør være en unik måte å identifisere en post på.

Det er nødvendig å kombinere alle tre attributtene i tabellen for å ha en unik nøkkel. En kunde kan leie mer enn én bil på samme dag (så Kunde ID og Dato utleid er ikke en god kombinasjon) mer enn én kunde kan også leie den samme bilen samme dag (så Lisensnummer og Dato utleid er ikke en god kombinasjon).

Imidlertid opprettelsen av en sammensatt nøkkel som forteller hvilken kunde, hvilken bil og på hvilken dag som er en utmerket unik nøkkel. Denne unike nøkkelen representerer både en sammensatt fremmednøkkel og en sammensatt hovednøkkel.

integrert/innebygd grafikk

Utenlandske primærnøkler

Å ja, utenlandske hovednøkler går ut. Selv om det ikke er noe offisielt navn på det, kan en fremmed nøkkel også være en hovednøkkel i samme tabell. Dette skjer når du oppretter en ny tabell som inneholder spesialiserte data om en eksisterende enhet (eller registrerer i en annen tabell).

Si at Fred (som jobber i bilutleiefirmaet) er i selskapets database under tabellen for ansatte. Etter noen år blir han veileder og blir lagt til tilsynsbordet.

Fred er fortsatt ansatt og vil fortsatt ha samme ID -nummer. Så Freds ansatt -ID er nå i veilederbordet som en utenlandsk nøkkel, som også vil bli en hovednøkkel i tabellen (siden det ikke gir mening å opprette et nytt ID -nummer for Fred nå som han er veileder).

Nå kan du identifisere utenlandske nøkler i SQL -databaser

Utenlandske nøkler forbinder forskjellige tabeller i en SQL -database. Fra denne artikkelen kan du se hva en fremmed nøkkel er, hvordan den fungerer, og hvorfor det er viktig å ha dem i en database. Du forstår også de grunnleggende, og enda mer komplekse, formene for utenlandske nøkler.

Hvis du synes utenlandske nøkler er interessante, kommer du til å ha en feltdag når du begynner å bruke prosjektet og valgoperasjoner for å spørre SQL -databasene dine.

Dele Dele kvitring E -post Lær hvordan du bruker prosjekt- og utvalgsoperasjonene i SQL

Bli kjent med SQL -relasjonsdatabaser ved å forstå prosjekt- og utvalgsoperasjonene med disse eksemplene.

Les neste
Relaterte temaer
  • Programmering
  • Programmering
  • SQL
  • database
Om forfatteren Kadeisha Kean(21 artikler publisert)

Kadeisha Kean er en fullstabel programvareutvikler og teknisk/teknologisk skribent. Hun har den særegne evnen til å forenkle noen av de mest komplekse teknologiske konseptene; produsere materiale som lett kan forstås av enhver nybegynner i teknologi. Hun brenner for å skrive, utvikle interessant programvare og reise verden rundt (gjennom dokumentarer).

Mer fra Kadeisha Kean

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere