Hva er SQLite utenlandske nøkler

Hva er SQLite utenlandske nøkler
SQLite er en åpen kildekode RDBMS (Relational Database Management System), som administrerer dataene i tabeller. Tabellene som brukes i databaser kan ha forhold til hverandre, for å etablere dette forholdet, brukes utenlandske nøkler. Utenlandske nøkler forteller hvilken tabell som er koblet til hvilken tabell.

Forholdene mellom tabellene er nøkkelfunksjonen i relasjonsdatabaser, som blir representert av utenlandske og primære nøkler. I denne artikkelen vil vi forklare de utenlandske nøklene og deres arbeid i sqlite.

Hva er utenlandske nøkler?

Utenlandske nøkler er verdiene i en tabell som indikerer den primære nøkkelen til en annen tabell. For å forstå dette, la oss vurdere to tabeller, tabell A og tabell B:

Tabell A

Student -ID (Primær_Key) Student navn Lærer -ID (Forign_Key)
1 John 123
2 Paul 453

Tabell b

Lærer -ID (Primær_Key) Lærernavn Emner tillatt
123 Alex Matematikk, fysikk
453 Juana Kjemi, botanikk

Nå, i tabell A, Student ID er den primære nøkkelen til den tabellen, og Lærer -ID er den utenlandske nøkkelen, men i tabell B, Lærer -ID er den primære nøkkelen. Lærer -ID, som er en fremmed nøkkel, etablerer et forhold mellom tabell A til tabell B.

Hvordan sjekke statusen til den utenlandske nøkkelen i SQLite

SQLite Begynn å støtte funksjonen i en fremmed nøkkel etter utgivelsen av versjonen 3.6.19, så for å sjekke om den installerte versjonen av SQLite støtter den utenlandske nøkkelen eller ikke, utfør følgende kommando i SQLite -miljøet:

Pragma Foreign_Keys;

Utgangen kan enten være “0” eller “1”, og hvis den ikke viser noen utgang, betyr den ikke at den ikke støtter de utenlandske nøklene.

Produksjon Resultat
0 De utenlandske nøklene er deaktivert
1 De utenlandske nøklene er aktivert

Hvordan aktivere/deaktivere utenlandske nøkler i SQLite

For å aktivere de utenlandske nøklene i SQLite, kjør følgende:

Pragma Foreign_Keys = ON;

Vi kan deaktivere de utenlandske nøklene, ved bare å skrive av i stedet for på kommandoen ovenfor. For å bekrefte at utenlandske nøkler er aktivert, kjører du Pragma -kommandoen:

Pragma Foreign_Keys;

Utgangen viser 1, noe som betyr at de utenlandske nøklene er aktivert.

Hva er den generelle syntaksen ved å bruke utenlandsk nøkkel

Den generelle syntaksen ved å bruke en fremmed nøkkel for å lage en tabell er:

Lag tabell tabell_navn
(
Kolonne1 Datatype [NULL | Ikke null] primærnøkkel,
Kolonne2 Datatype [NULL | Ikke null] utenlandsk nøkkel,
..
Utenlandsk nøkkel (kolonne1, kolonne2, ...))
Referanser Parent_Table (kolonne1, kolonne2 ...)
);

Forklaringen på det er:

  • Bruk klausulen “Lag tabell” For opprettelsen av et bord
  • Bytt ut tabellnavn med navnet på tabellen
  • Definer kolonnene med datatypene sine, og definerer også om støtten null/ikke nullverdier
  • Nevner også kolonnene som holder primærnøkkelen og den utenlandske nøkkelen
  • Bruk uttalelsen Utenlandsk nøkkel og nevn i () kolonnenavnene som er utenlandske nøkler
  • Bruk klausulen HENVISNING og bytt ut foreldre_tabelen med navnet på overordnet bord og nevne det utenlandske nøklene

Hvordan fungerer en fremmed nøkkel i sqlite

For å forstå arbeidet med utenlandske nøkler, la oss vurdere et eksempel på en budtjeneste og lage to tabeller, customer_details og forsendelse_details som har følgende data:

kundedetaljer

Kunde ID Kundenavn Forsendelse_id
1 John 5612
2 Paul 3467

forsendelse detaljer

Forsendelse_id Status Fra (by) Til (by)
5612 Levert London Manchester
3467 Igang Bristol Cardiff

I tabellen er Customer_Details, Customer_id den primære nøkkelen og forsendelse_id er en fremmed nøkkel. Og i tabellen er forsendelse_details, forsendelse_id en primær nøkkel.

Hvordan legge til en fremmed nøkkel i sqlite

For å lage en tabell, kjører Customer_Details følgende kommando:

Opprett tabell Customer_Details (Customer_ID Integer Primary Key, Customer_name Text Not Null, Shipment_id Integer Not Null, Foreign Key (Shipment_id) Referanser Shipment_Details (Shipment_id));

I kommandoen ovenfor har vi nevnt den utenlandske nøkkelen og primærnøkkelen og refererer også til tabellen der den utenlandske nøkkelen vil være tilgjengelig. Etter opprettelsen av Customer_Details -tabellen, oppretter vi tabellen Shipment_Details som:

Lag tabellforsendelse_details (forsendelse_id heltall primærnøkkel, status tekst, city_from tekst, city_to tekst);

For å sette inn verdier i Customer_Details -tabellen, bruk følgende kommando:

Sett inn Customer_Details (Customer_ID, Customer_name, Shipment_id) verdier (1, 'John', 5612), (2, 'Paul', 3467);

Vi kan se at det genererte feilen til “Feil: utenlandsk nøkkelbegrensning mislyktes”, Genereres denne feilen fordi vi refererte til tabellen Shipment_id, Shipment_Details, som ikke har noen verdi ennå. Så for å fjerne denne feilen, må vi først redigere dataene i Shipment_Details, at vi viser til den utenlandske nøkkelen. Hvis du vil sette inn data i tabellen Shipment_Details, kjører du følgende kommando:

Sett inn forsendelse_Details (Shipment_id, Status, City_from, City_to) Verdier (5612, 'levert', 'London', 'Manchester'), (3467, 'In_Process', 'Bristol', 'Cardiff');

For å vise tabellen, Sending_Details, kjør kommandoen:

Velg * fra Shipment_Details;

Nå, kjør igjen kommandoen for å sette inn verdier i Customer_Details ved å bruke uttalelsen:

Sett inn Customer_Details (Customer_ID, Customer_name, Shipment_id) verdier (1, 'John', 5612), (2, 'Paul', 3467);

Kommandoen har utført med hell uten å generere feilen "utenlandsk nøkkelbegrensning". For å vise tabellen, kjør kommandoen:

Velg * fra Customer_Details;

Hva er de utenlandske nøkkelbegrensningene handlinger

Det er noen handlinger som du kan utføre på overordnede nøkkelen som et resultat av at barnetnøkkelen svarer. Den generelle syntaksen er:

Utenlandsk nøkkel (Foreign_key_column)
Referanser Parent_Table (Parent_Key_Column)
På oppdatering
På sletting;

En forklaring på denne syntaksen er:

  • Skriv klausulen til Utenlandsk nøkkel og erstatt "utenlandske_key_column" med navnet på din utenlandske nøkkel
  • Bytt ut “Parent_Table” med navnet på overordnede tabellen og også “Parent_Key_columns” med overordnede nøkkeltnavn
  • Skriv klausulen "på oppdatering" og "på sletting", og erstatt "" med handlingen du vil utføre

SQLite støtter handlingene som er forklart i tabellen:

Handling Beskrivelse
Null Når overordnede nøkkelen blir slettet, er barnetast -kolonnen satt til nullverdier
Sett standard Det fungerer det samme som NULL -handlingen, men i stedet for å sette nullverdier til kolonnen Child Key, setter den en standardverdi
Ingen handling Når det gjøres endringer i overordnet nøkkel til overordnet database, blir det ikke funnet noen endringer i barnasten
Begrense Det lar ikke brukeren legge til eller slette verdiene fra en overordnet nøkkel
Kaskade Den viderefører endringene som er gjort i et foreldrebord til barnebordet

Konklusjon

Relasjonsdatabaser er populære for deres funksjon i å gi forholdet mellom tabellene, SQLite, en av de relasjonelle databasene, støtter også denne funksjonen. Forholdene er etablert ved hjelp av nøkler, som er kjent som utenlandske og primære nøkler. I SQLite bør den utenlandske nøkkelen være aktivert for å bruke den. I denne artikkelen lærte vi hva som er de utenlandske nøklene i SQLite og hvordan de fungerer. Vi diskuterte også begrensningshandlingene til utenlandske nøkler støttet av SQLite.