Unik nyckel

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 22 maj 2022; kontroller kräver 2 redigeringar .

I relationell DBMS är en unik nyckel en potentiell nyckel (termen möjlig nyckel används också i ryska källor [1] ), vilket inte är den primära nyckeln för en relation. Alla kandidatnycklar för en relation kan unikt identifiera posterna för relationen, men endast en av dem används som primärnyckel för relationen [1] . De återstående kandidatnycklarna kallas unika nycklar eftersom de unikt kan identifiera en post i en relation. Unika nycklar kan ha flera kolumner. Unika nycklar kallas också alternativa nycklar. Unika nycklar är ett alternativ till den primära nyckeln i en relation. Vanligtvis har unika nycklar en UNIK begränsning.

Översikt över konceptet

Nycklar i ett relationellt DBMS är ett sätt att ge tillgång till data i tabeller. En nyckel är ett enstaka relationsattribut eller en sammanlänkning av flera attribut. När man specificerar databasstrukturen i ett relationellt DBMS kan ytterligare restriktioner (restriktioner) läggas på nyckeln, som kontrolleras vid varje försök att skriva till databasen och fungerar som ett sätt att säkerställa integriteten hos data i databasen. En sådan begränsning som ofta används när man bygger en databas är den unika begränsningen. Förekomsten av denna begränsning på ett visst attribut (databaspostfält) eller deras sammanlänkning säkerställer att en databastabell inte kommer att stöta på mer än en post med något speciellt fältvärde eller fältsammansättning. En nyckel med en sådan begränsning kallas unik. Det kan finnas godtyckligt många unika nycklar i samma databastabell, som var och en kan användas för att unikt identifiera en post i tabellen. Men bara en av dem sticker ut som primär .

I den enklaste definitionen är "en nyckel en unik identifierare" [2] , så en unik nyckel är en pleonasm . Nycklar som finns i det ursprungliga objektet är unika i det objektet. Nycklar som överförs till en annan enhet kan vara unika eller inte, beroende på designen och hur de används i den andra tabellen. Främmande nycklar kan vara primärnycklar i en annan tabell; till exempel kan PersonID bli EmployeeID i Employee-tabellen. I det här fallet är EmployeeID både en främmande nyckel och en unik primärnyckel, vilket innebär att tabellerna har ett förhållande 1:1. I det fall en personenhet innehåller en biologisk faderidentifierare förväntas faderidentifieraren inte vara unik, eftersom en far kan ha mer än ett barn.

I en relationsdatabas identifierar en kandidatnyckel varje rad med datavärden i en databastabell. En kandidatnyckel innehåller en kolumn eller uppsättning kolumner i en databastabell. Inga två separata rader eller dataposter i en databastabell kan ha samma datavärde (eller kombination av datavärden) i de kolumner som är associerade med en kandidatnyckel, eftersom NULL-värden inte används. Beroende på strukturen kan en databastabell ha många kandidatnycklar, men inte mer än en kandidatnyckel kan identifieras som en primärnyckel.

Nyckelbegränsningen gäller uppsättningen av tupler i tabellen vid en given tidpunkt. En nyckel är inte nödvändigtvis en unik identifierare bland alla möjliga instanser av tupler som kan lagras i en tabell, men den innebär en dataintegritetsregel att dubbletter inte ska tillåtas i en databastabell. Några möjliga exempel på nycklar är personnummer, ISBN, fordonsregistreringsnummer eller användarnamn för inloggning.

I princip kan vilken nyckel som helst refereras av främmande nycklar. Vissa SQL DBMS tillåter att en främmande nyckel-begränsning endast anges på en primärnyckel, men de flesta system tillåter att en främmande nyckel-begränsning refererar till vilken tabellnyckel som helst.

Definition i SQL

Definiera en unik nyckel i SQL-syntax:

ÄNDRA TABELL < tabellidentifierare > LÄGG TILL [ CONSTRAINT < constraint identifier > ] { PRIMÄRNYCKEL | _ UNIQUE } ( < kolumnnamn > [ { , < kolumnnamn > } ... ] ) _ _

Dessutom kan nycklar definieras när du skapar en tabell CREATE TABLE.

CREATE TABLE tabellnamn ( id_col INT , col2 CHARACTER VARYING ( 20 ), key_col SMALLINT NOT NULL , ... CONSTRAINT key_unique UNIQUE ( key_col ), ... ) SKAPA TABELL tabellnamn ( id_col INT PRIMARY KEY , col2 CHARACTER VARIING ( 20 ), ... key_col SMALLINT NOT NULL UNIQUE , ... )

Skillnader mellan primära och unika nycklar

Primära nyckelegenskaper

Primärnyckeln är inte nullbar (den kan inte definieras för kolumner som tillåter ett sådant värde). Varje tabell kan inte ha mer än en primärnyckel [3] . I vissa DBMS skapar standardprimärnyckeln ett klustrat index. I praktiska SQL-implementeringar kanske vissa tabeller inte har en primärnyckel [1] .

Unika nyckelegenskaper

En unik begränsning kan ställas in på kolumner som tillåter null-värden, i vilket fall rader som innehåller null-värden kanske inte är unika i den uppsättning kolumner som definieras av begränsningen.

Varje tabell kan ha flera unika nycklar [3] . I vissa DBMS skapar den unika standardbegränsningen ett icke-klustrat index.

Observera att, till skillnad från en PRIMARY KEY-begränsning, betyder en UNIK begränsning inte INTE NULL för kolumnerna som är involverade i begränsningen. Om du inte vill tillåta null-värdet måste du ange NOT NULL-begränsningen. Du kan ställa in UNIKA begränsningar på nollbara kolumner, men SQL-standarden säger att begränsningen inte garanterar unikheten hos nollbara kolumner (unikhet gäller inte rader där någon av kolumnerna innehåller ett nullvärde).

Enligt SQL-standarden [4] ger en unik begränsning inte unikhet i närvaro av NULL-värden och kan därför innehålla flera rader med identiska kombinationer av null- och icke-nullvärden - dock implementerar inte alla DBMS denna funktion i enlighet med SQL-standarden [4] med SQL-standarden [5] [6] .

Se även

Externa länkar

Anteckningar

  1. ↑ 1 2 3 Sergey Kuznetsov. Dubletter, nollor, primära och möjliga nycklar och andra exotiska charm i SQL-språket . citforum.ru . Hämtad 24 april 2022. Arkiverad från originalet 10 maj 2022.
  2. Awad, Elias (1985), Systems Analysis and Design, andra upplagan , Richard D. Irwin, Inc., ISBN 0-256-02824-9 , < https://archive.org/details/systemsanalysisd00awad > 
  3. ↑ 1 2 Sergey Moiseenko. SQL, uppgifter och lösningar. Kategorisk integritet eller enhetsintegritet | Interaktiv SQL-handledning | SQL-tutorial.ru _ www.sql-tutorial.ru _ Hämtad 24 april 2022. Arkiverad från originalet 29 juni 2020.
  4. Sammanfattning av ANSI/ISO/IEC SQL Arkiverad från originalet den 25 april 2012.
  5. Begränsningar - SQL-databasreferensmaterial - Lär dig SQL, läs en SQL-manual, följ en SQL-handledning eller lär dig hur du strukturerar en SQL-fråga! . www.sql.org . Hämtad 16 augusti 2018. Arkiverad från originalet 28 juli 2021.
  6. Jämförelse av olika SQL-implementationer . troels.arvin.dk . Hämtad 16 augusti 2018. Arkiverad från originalet 09 mars 2005.

Anteckningar