Le relazioni tra le tabelle sono la caratteristica chiave dei database relazionali, che è rappresentata da chiavi straniere e primarie. In questo articolo, spiegheremo le chiavi straniere e il loro lavoro in SQLite.
Quali sono le chiavi straniere?
Le chiavi straniere sono i valori in una tabella che indicano la chiave primaria di un'altra tabella. Per capire questo consideriamo due tabelle, la tabella A e la tabella B:
Tabella A | ||
Student ID (Primary_Key) | Nome dello studente | ID insegnante (forign_key) |
---|---|---|
1 | John | 123 |
2 | Paolo | 453 |
Tabella b | ||
ID insegnante (primario_key) | Nomi degli insegnanti | Soggetti consentiti |
---|---|---|
123 | Alex | Matematica, fisica |
453 | Juana | Chimica, botanica |
Ora, nella tabella a, ID studente è la chiave principale di quella tabella e ID insegnante è la chiave straniera, ma nella tabella B, ID insegnante è la chiave primaria. L'ID insegnante, che è una chiave straniera, stabilisce una relazione tra la tabella A alla tabella B.
Come controllare lo stato della chiave estera in SQLite
SQLite inizia a supportare la funzione di una chiave esterna dopo il rilascio della sua versione 3.6.19, per verificare se la versione installata di SQLite supporta o meno la chiave esterna, eseguire il seguente comando nell'ambiente SQLite:
Pragma Foreign_keys;L'output può essere "0" o "1" e se non visualizza alcun output, significa che non supporta le chiavi estere.
Produzione | Risultato |
---|---|
0 | Le chiavi straniere sono disabilitate |
1 | Le chiavi straniere sono abilitate |
Come abilitare/disabilitare le chiavi straniere in sqlite
Per abilitare le chiavi estere in SQLite, eseguire quanto segue:
Pragma Foreign_keys = on;Possiamo disabilitare le chiavi straniere, semplicemente digitando invece che nel comando sopra. Per confermare che le chiavi straniere sono abilitate, eseguire il comando Pragma:
Pragma Foreign_keys;L'output mostra 1, il che significa che le chiavi estere vengono abilitate.
Qual è la sintassi generale dell'utilizzo della chiave estera
La sintassi generale dell'utilizzo di una chiave esterna per creare una tabella è:
Crea table table_nameLa spiegazione di esso è:
Come funziona una chiave straniera in sqlite
Per comprendere il funzionamento delle chiavi straniere, consideriamo un esempio di un servizio di corriere e creiamo due tabelle, customer_details e shipment_details che hanno i seguenti dati:
Dettagli cliente | ||
Identificativo del cliente | Nome del cliente | Shipment_id |
---|---|---|
1 | John | 5612 |
2 | Paolo | 3467 |
Shipment_Details | |||
Shipment_id | Stato | Da (città) | A (città) |
---|---|---|---|
5612 | Consegnato | Londra | Manchester |
3467 | In corso | Bristol | Cardiff |
Nella tabella, Customer_Details, Customer_id è la chiave principale e Shipment_id è una chiave esterna. E nella tabella, Shipment_Details, Shipment_id è una chiave primaria.
Come aggiungere una chiave esterna in sqlite
Per creare una tabella, Customer_Details esegui il seguente comando:
Crea table Customer_Details (Customer_ID Integer Key Primary, Customer_Name Testo non NULL, Shipment_id Integer non NULL, Tasto estero (Spedizione_ID) Riferimenti Shipment_Details (Shipment_id));Nel comando sopra, abbiamo menzionato la chiave estera e la chiave primaria e anche fare riferimento alla tabella in cui la chiave esterna sarà disponibile. Dopo la creazione della tabella Customer_Details, creeremo la tabella Shipment_Details come:
Crea tabella Shipment_Details (Spedition_id Integer Key, text di stato, testo di City_From, testo City_to);Ora per inserire i valori nella tabella Customer_Details, utilizzare il seguente comando:
Inserisci in customer_details (customer_id, customer_name, shipment_id) valori (1, 'John', 5612), (2, 'Paul', 3467);Possiamo vedere che ha generato l'errore di "Errore: vincolo di chiave esterna non riuscita", Questo errore viene generato perché ci riferivamo a Shipment_id di Table, Shipment_Details, che non ha ancora valore. Quindi, per rimuovere questo errore, in primo luogo, dobbiamo modificare i dati in Shipment_Details, che ci riferiamo alla chiave esterna. Per inserire i dati nella tabella Shipment_Details, eseguire il comando seguente:
Inserisci in Shipment_Details (Shipment_id, Status, City_From, City_to) valori (5612, "consegnato", "Londra", "Manchester"), (3467, "in_process", "bristol", "cardiff");Per visualizzare la tabella, Shipment_details, eseguire il comando:
Seleziona * da Shipment_Details;Ora, esegui nuovamente il comando per inserire i valori in Customer_Details usando l'istruzione:
Inserisci in customer_details (customer_id, customer_name, shipment_id) valori (1, 'John', 5612), (2, 'Paul', 3467);Il comando è stato eseguito correttamente senza generare l'errore "vincolo della chiave esterna". Per visualizzare la tabella, eseguire il comando:
Seleziona * da customer_details;Quali sono le azioni dei vincoli della chiave estera
Ci sono alcune azioni che è possibile eseguire sulla chiave principale a seguito di cui la chiave del bambino risponde. La sintassi generale è:
Key Foreign (Foreign_key_column)Una spiegazione a questa sintassi è:
SQLite supporta le azioni spiegate nella tabella:
Azione | Descrizione |
---|---|
Nullo | Quando viene eliminata la chiave principale, la colonna della chiave figlio imposta su valori null |
Imposta default | Funziona allo stesso modo dell'azione null, ma invece di impostare i valori null nella colonna della chiave figlio, impostare un valore predefinito |
Nessuna azione | Quando vengono apportate modifiche nella chiave principale del database principale, non si verificano modifiche nella chiave del bambino |
Limitare | Non consente all'utente di aggiungere o eliminare i valori da una chiave principale |
Cascata | Passa le modifiche apportate in una tabella genitore al tavolo figlio |
Conclusione
I database relazionali sono popolari per la loro caratteristica di fornire le relazioni tra le tabelle, SQLite, uno dei database relazionali, supporta anche questa funzione. Le relazioni sono stabilite con l'aiuto delle chiavi, che sono note come chiavi straniere e primarie. In SQLite, la chiave esterna dovrebbe essere abilitata a usarla. In questo articolo, abbiamo imparato quali sono le chiavi straniere in SQLite e come funzionano. Abbiamo anche discusso delle azioni di vincolo delle chiavi straniere supportate da SQLite.