Med utländska nycklar kan databasadministratörer enkelt identifiera de olika anslutningarna som finns i ett SQL-databashanteringssystem.

SQL utför matematiska operationer på data i ett databashanteringssystem. Dessa databaser innehåller olika tabeller som lagrar data på en specifik enhet. Om du har en biluthyrningsdatabas är en enhet (eller tabell) i databasen kunder (som lagrar alla personuppgifter på varje kund).

Dessa databastabeller innehåller rader och kolumner, där varje rad är värd för en post och varje kolumn innehåller attributspecifika data.

I ett databashanteringssystem ska varje post (eller rad) vara unik.

Primära nycklar

Även om villkoret är att varje post i en tabell ska vara distinkt, är det inte alltid fallet. Fortsätter med exemplet med biluthyrningsdatabasen, om databasen innehåller två kunder som vardera har namnet "John Brown", en John Brown kan förväntas returnera en Mercedes-Benz som han inte gjorde hyra.

Att skapa en primär nyckel kommer att mildra denna risk. I ett SQL-databashanteringssystem är en primär nyckel en unik identifierare som skiljer en post från en annan.

instagram viewer

Därför bör varje post i ett SQL-databashanteringssystem ha en primär nyckel.

Använda primära nycklar i en databas

För att inkludera primära nycklar i ett databashanteringssystem med SQL kan du helt enkelt lägga till det som ett normalt attribut när du skapar en ny tabell. Så kundernas tabell kommer att innehålla fyra attribut (eller kolumner):

  • CarOwnerID (som lagrar primärnyckeln)
  • Förnamn
  • Efternamn
  • Telefonnummer

Relaterad: Hur man skapar en tabell i SQL

Nu har varje kundpost som kommer in i databasen ett unikt identifieringsnummer, samt ett förnamn, efternamn och telefonnummer. Telefonnumret är inte tillräckligt unikt för att vara en primär nyckel, för även om det är unikt för en person i taget, kan en person enkelt ändra sitt nummer, vilket innebär att det nu tillhör någon annan.

En post med ett primärt nyckelexempel

/ * skapar en ny post i kundtabellen * /
INSÄTTA I KUNDERVÄRDEN
('0004',
'John',
'Brun',
'111-999-5555');

SQL-koden ovan kommer att lägga till en ny post till den befintliga Kunder tabell. Tabellen nedan visar den nya kundtabellen med de två John Brown-posterna.

Den utländska nyckeln

Nu har du primära nycklar som unikt skiljer en biluthyrare från en annan. Det enda problemet är att det i databasen inte finns någon verklig koppling mellan varje John Brown och bilen som han hyr.

Därför finns fortfarande möjligheten att göra ett misstag. Det är här främmande nycklar spelar in. Att använda en primär nyckel för att lösa problemet med äganderätten är endast möjlig om den primära nyckeln fungerar som en främmande nyckel.

Vad är en främmande nyckel?

I ett SQL-databashanteringssystem är en främmande nyckel en unik identifierare eller en kombination av unika identifierare som ansluter två eller flera tabeller i en databas.

Av de fyra SQL-databashanteringssystem som finns är det relationsdatabashanteringssystemet det mest populära. När du bestämmer vilken tabell i en relationsdatabas som ska ha en främmande nyckel, bör du först identifiera vilken tabell som är ämnet och vilket är objektet i deras relation.

Om du går tillbaka till biluthyrningsdatabasen för att ansluta varje kund till rätt bil måste du förstå att en kund (ämnet) hyr en bil (objektet). Därför bör den främmande nyckeln finnas i biltabellen.

SQL-koden som genererar en tabell med en främmande nyckel skiljer sig något från normen.

Skapa en tabell med ett främmande nyckelexempel

/ * skapar en ny biltabell i biluthyrningsdatabasen * /
SKAPA BORD Bilar
(
LicenseNumber varchar (30) NOT NULL PRIMARY KEY,
CarType varchar (30) INTE NULL,
CustomerID varchar (30) UTLÄNDSKA NYCKELHÄNVISNINGAR Kunder (CustomerID)
);

Som du kan se i koden ovan måste en främmande nyckel uttryckligen identifieras som sådan, tillsammans med en hänvisning till den primära nyckeln som ansluts till den nya tabellen.

Relaterad: Essential SQL Commands Cheat Sheet för nybörjare

För att lägga till en post i den nya tabellen måste du se till att värdet i det främmande nyckelfältet matchar värdet i det primära nyckelfältet i den ursprungliga tabellen.

Lägga till en post med ett främmande nyckelexempel

/ * skapar en ny post i biltabellen * /
INSÄTTA I BILAR VÄRDEN
('100012',
'Mercedes-Benz',
'0004');

Koden ovan skapar en ny post i den nya Bilar tabell, vilket ger följande resultat.

Bilar bord

Från tabellen ovan kan du identifiera rätt John Brown som hyr en Mercedes-Benz med den utländska nyckeln i posten.

Advance Foreign Keys

Det finns två andra sätt att använda en främmande nyckel i en databas.

Om du ser tillbaka på definitionen av en främmande nyckel ovan, kommer du att upptäcka att det står att en främmande nyckel kan vara en unik identifierare eller en kombination av unika identifierare.

Om vi ​​går tillbaka till exemplet med biluthyrningsdatabasen ser du att skapandet av en ny post (av samma bil) varje gång en kund hyr den bilen, motverkar syftet med Bilar tabell. Om bilarna säljs och säljs till en enda kund en gång är den befintliga databasen perfekt. men med tanke på att bilarna hyr ut finns det ett bättre sätt att representera dessa uppgifter.

Sammansatta nycklar

En sammansatt nyckel har två eller flera unika identifierare. I en relationsdatabas kommer det att förekomma att användningen av en enda främmande nyckel inte i tillräcklig utsträckning representerar de förhållanden som finns i den databasen.

I biluthyrningsexemplet är det mest praktiska tillvägagångssättet att skapa en ny tabell som lagrar hyresinformationen. För att informationen i biluthyrningstabellen ska vara användbar måste den anslutas till både bil- och kundborden.

Skapa ett bord med sammansatta utländska nycklar

/ * skapar en CarRental-tabell i biluthyrningsdatabasen * /
SKAPA TABELL CarRental
(
Hyresdatum DATUM INTE NULL,
LicenseNumber varchar (30) INTE NULL UTLÄNDSKA NYCKELREFERENSER Bilar (LicenseNumber),
CustomerID varchar (30) INTE NULL UTLÄNDSKA NYCKELHÄNVISNINGAR Kunder (CustomerID),
PRIMÄR KEY (DateRented, LicenseNumber, CustomerID)
);

Koden ovan visar en viktig punkt; även om en tabell i en SQL-databas kan ha mer än en främmande nyckel, kan den bara ha en enda primärnyckel. Det beror på att det bara bör finnas ett unikt sätt att identifiera en post.

Det är nödvändigt att kombinera alla tre attributen i tabellen för att få en unik nyckel. En kund kan hyra mer än en bil samma dag (så Kundnummer och Datum hyrd är inte en bra kombination) kan fler än en kund också hyra samma bil samma dag (så Licensnummer och Datum hyrd är inte en bra kombination).

Men skapandet av en kompositnyckel som berättar vilken kund, vilken bil och vilken dag gör en utmärkt unik nyckel. Denna unika nyckel representerar både en sammansatt främmande nyckel och en sammansatt primärnyckel.

Utländska primärnycklar

Åh ja, utländska primärnycklar avslutas. Även om det inte finns något officiellt namn för det kan en utländsk nyckel också vara en primär nyckel i samma tabell. Detta händer när du skapar en ny tabell som innehåller specialiserad data om en befintlig enhet (eller postar i en annan tabell).

Say Fred (som arbetar på biluthyrningsföretaget) finns i företagets databas under medarbetarbordet. Efter några år blir han handledare och läggs till i tabellen för handledare.

Fred är fortfarande anställd och kommer fortfarande att ha samma id-nummer. Så Freds medarbetar-id finns nu i övervakningstabellen som en utländsk nyckel som också kommer att bli en primär skriv in den tabellen (eftersom det inte är meningsfullt att skapa ett nytt id-nummer för Fred nu när han är handledare).

Nu kan du identifiera utländska nycklar i SQL-databaser

Utländska nycklar ansluter olika tabeller i en SQL-databas. Från den här artikeln kan du se vad en främmande nyckel är, hur den fungerar och varför det är viktigt att ha dem i en databas. Du förstår också de grundläggande och ännu mer komplexa formerna av främmande nycklar.

Om du tycker att främmande nycklar är intressanta kommer du att ha en fältdag när du börjar använda projekt- och urvalsoperationer för att fråga dina SQL-databaser.

E-post
Lär dig hur du använder projekt- och urvalsoperationer i SQL

Ta reda på SQL-relationsdatabaser genom att förstå projekt- och urvalsoperationerna med dessa exempel.

Läs Nästa

Relaterade ämnen
  • Programmering
  • Programmering
  • SQL
  • databas
Om författaren
Kadeisha Kean (14 artiklar publicerade)

Kadeisha Kean är en full-stack programvaruutvecklare och teknisk / teknikförfattare. Hon har den distinkta förmågan att förenkla några av de mest komplexa tekniska begreppen; producera material som lätt kan förstås av alla nybörjare. Hon brinner för att skriva, utveckla intressant programvara och resa runt i världen (genom dokumentärer).

Mer från Kadeisha Kean

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.