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_navnForklaringen på det er:
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)En forklaring på denne syntaksen er:
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.