Vad är främmande nycklar i SQL -databaser?

Vad är främmande nycklar i SQL -databaser?

Utländska nycklar tillåter databasadministratörer att enkelt identifiera de olika anslutningar som finns i ett SQL -databashanteringssystem.





SQL utför matematiska operationer på data i ett databashanteringssystem. Dessa databaser innehåller olika tabeller som var och en lagrar data på en specifik enhet. Om du har en biluthyrningsdatabas kommer en enhet (eller tabell) i databasen att vara kunder (som lagrar alla personuppgifter för 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 bör varje post (eller rad) vara unik.

Primära nycklar

Även om bestämmelsen är att varje post i en tabell ska vara distinkt, är detta inte alltid fallet. Om databasen innehåller två kunder som var och en har namnet John Brown, kan en John Brown förväntas återlämna en Mercedes-Benz som han inte hyrde om vi fortsätter med biluthyrningsdatabasens exempel.



Om du skapar en primär nyckel minskar du denna risk. I ett SQL -databashanteringssystem är en primär nyckel en unik identifierare som skiljer en post från en annan.

titta på filmer online gratis utan att ladda ner eller registrera dig

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





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å kundens tabell innehåller fyra attribut (eller kolumner):

  • CarOwnerID (som lagrar huvudnyckeln)
  • Förnamn
  • Efternamn
  • Telefonnummer

Relaterad: Hur man skapar en tabell i SQL





Nu kommer varje kundpost som kommer in i databasen att ha 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 skulle tillhöra någon annan.

En post med ett primärt nyckelexempel

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

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

Utländska nyckeln

Nu har du huvudnycklar som unikt skiljer en biluthyrare från en annan. Det enda problemet är att det i databasen inte finns något verkligt samband 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 utländska nycklar spelar in. Att använda en primär nyckel för att lösa problemet med ägarintetydighet är bara möjligt om huvudnyckeln fungerar som en främmande nyckel.

Vad är en utländsk nyckel?

I ett SQL -databashanteringssystem är en främmande nyckel en unik identifierare eller en kombination av unika identifierare som förbinder 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.

För att återgå till hyrbilsdatabasen 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 bilens bord.

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

Skapa ett bord med ett främmande nyckelexempel

/* 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 ovan måste en främmande nyckel uttryckligen identifieras som sådan, tillsammans med en referens till den primära nyckeln som kopplas till den nya tabellen.

hur man sätter iphone 7 i återställningsläge

Relaterad: Essential SQL Commands fuskblad 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 utländska 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

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('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.

Förskott utländska nycklar

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 den säger att en främmande nyckel kan vara en unik identifierare eller en kombination av unika identifierare.

När vi går tillbaka till exemplet med hyrbilsdatabasen ser du att skapandet av ett nytt rekord (av samma bil) varje gång en kund hyr bilen, besegrar syftet med Bilar tabell. Om bilarna är till salu och säljs till en enda kund en gång är den befintliga databasen perfekt; men med tanke på att bilarna är uthyrning finns det ett bättre sätt att representera dessa data.

Kompositnycklar

En sammansatt nyckel har två eller flera unika identifierare. I en relationsdatabas kommer det att finnas tillfällen då användningen av en enda främmande nyckel inte tillräckligt representerar de relationer som finns i databasen.

I biluthyrningsexemplet är det mest praktiska tillvägagångssättet att skapa ett nytt bord som lagrar hyrdetaljerna. För att informationen i biluthyrningstabellen ska vara användbar måste den anslutas till både bil- och kundtabellerna.

Skapa ett bord med sammansatta utländska nycklar

/* 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 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. Detta beror på att det bara ska finnas ett unikt sätt att identifiera en post.

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

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

hur man ansluter en mikrofon till en dator

Utländska primära nycklar

Åh ja, utländska primära nycklar går ut. Även om det inte finns något officiellt namn för det, kan en främmande nyckel också vara en huvudnyckel i samma tabell. Detta händer när du skapar en ny tabell som innehåller specialiserad data om en befintlig enhet (eller post i en annan tabell).

Säg att Fred (som arbetar på biluthyrningsföretaget) finns i företagets databas under medarbetartabellen. Efter några år blir han handledare och läggs till på arbetsbordet.

Fred är fortfarande anställd och kommer fortfarande att ha samma id -nummer. Så Freds medarbetar -ID finns nu i arbetsledartabellen som en främmande nyckel som också kommer att bli en huvudnyckel i den tabellen (eftersom det inte är vettigt att skapa ett nytt id -nummer för Fred nu när han är chef).

Nu kan du identifiera främmande 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 utländska nycklar är intressanta kommer du att ha en fältdag när du börjar använda projektet och urvalsoperationer för att fråga dina SQL -databaser.

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

Få grepp om 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(21 artiklar publicerade)

Kadeisha Kean är en mjukvaruutvecklare i full-stack och teknisk/teknikförfattare. Hon har den distinkta förmågan att förenkla några av de mest komplexa tekniska begreppen; producerar material som lätt kan förstås av alla tekniska 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!

Klicka här för att prenumerera