Fremmednøkkel
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 ) PÅ 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
- Utenlandske nøkler i SQL-99 , på kb.askmonty.org . Hentet 16. juni 2013 (arkivert fra originalen 17. september 2012) .
- Utenlandske nøkler i PostgreSQL , på postgresql.org .
- Utenlandske nøkler i MySQL , på dev.mysql.com .
- Utenlandske nøkler i FirebirdSQL , på firebirdsql.org .
- Utenlandske nøkler i SQLite , på sqlite.org .
- UTENLANDSKE NØKKEL-begrensninger på Microsoft msdn , på msdn.microsoft.com .