close

Fremmednøkkel

Hopp til navigasjon Hopp til søk

En fremmednøkkel , i sammenheng med relasjonsdatabaser , er en referanseintegritetsbegrensning mellom to eller flere tabeller. Den identifiserer en eller flere kolonner i en tabell, kalt referansetabell, som refererer til en eller flere kolonner i en annen tabell, kalt referert.

Beskrivelse

Verdiene til en post av de refererende kolonnene må eksistere i en enkelt post i den refererte tabellen. Dette innebærer at en post i referansetabellen ikke kan inneholde verdier som ikke finnes i den refererte tabellen, bortsett fra i det spesielle tilfellet med NULL -verdier hvis referansekolonnen ikke er obligatorisk. Flere poster i referansetabellen kan peke til samme post i referansetabellen. I de fleste tilfeller tilsvarer dette "en-til-mange"-forholdet mellom en overordnet tabell og en underordnet tabell. Referansetabellen og den refererte tabellen kan være den samme tabellen. En slik fremmednøkkel kalles også selvrefererende eller rekursiv . En tabell kan ha mange fremmednøkler, og hver fremmednøkkel kan referere til en annen tabell.

Handlinger

Når det skjer en endring i den refererte tabellen som påvirker fremmednøkkelen, kan en handling utføres automatisk av DBMS for å sikre integritet. Den spesifikke handlingen som skal utføres kan velges av brukeren, tast for tast. Det er to hendelser som påvirker primærnøkkelen: PÅ SLETT skjer når sletting av en post i den refererte tabellen blir bedt om; ON UPDATE skjer når du prøver å endre ett eller flere felt referert til av fremmednøkkelen.

Matchtyper

SQL-standarder gir tre forskjellige måter å finne samsvar mellom poster, som hver involverer en annen måte å håndtere NULL- verdier på . De tre typene er:

  • MATCH FULL : Hvis fremmednøkkelen består av flere kolonner, kan ikke en NULL-verdi settes inn i en kolonne med mindre alle kolonnene er NULL. Hvis fremmednøkkelen kun består av én kolonne, kan du angi NULL-verdier.
  • MATCH PARTIAL : Lar deg angi NULL-verdier. Hvis fremmednøkkelen består av flere kolonner, kan du sette inn NULL-verdier i alle eller noen av kolonnene.
  • MATCH ENKEL : NULL-verdier er ikke tillatt.

Eksempel

La oss vurdere følgende DDL -setning :

LAG  TABELL  faktura  ( 
  id  INTEGER  PRIMÆR  NØKKEL , 
  kjøpsdato  DATO , 
  kunde_id  INTEGER , 
  UTENLANDSK  NØKKEL ( kunde_id )  REFERANSER  kunde ( id )   SLETT  CASCADE 
)

Denne koden vil lage en tabell fatturader du kan spesifisere en id( primærnøkkel ), en data_acquistoog en id_cliente. Begrensningen er at id_clienteden finnes i kolonnen idi tabellen cliente.

Nedenfor er et eksempel på en juridisk databaseforekomst for uttalelsen ovenfor:

faktura
id Kjøpsdato Kunde ID
1 20/03/2018 111
2 20/03/2018 123
3 15.05.2020 111
kunde
id fornavn
111 Wikimedia Foundation
123 Jimbo SpA
200 Kule gadgets Inc.

Relaterte elementer

Eksterne lenker