Quali sono le chiavi straniere sqlite

Quali sono le chiavi straniere sqlite
SQLite è un RDBMS open source (sistema di gestione del database relazionale), che gestisce i dati nelle tabelle. Le tabelle utilizzate nei database possono avere relazioni reciproche, per stabilire questa relazione, vengono utilizzate le chiavi straniere. Le chiavi straniere racconta quale tabella è collegata a quale tabella.

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_name
(
Datatype colonnello1 [NULL | Non null] chiave primaria,
Tipo di dati colonnello2 [NULL | Non null] chiave straniera,
..
Chiave straniera (colonna1, colonna2, ...))
Riferimenti parent_table (colonna1, colonna2…)
);

La spiegazione di esso è:

  • Usa la clausola "CREA TABELLA" per la creazione di un tavolo
  • Sostituisci table_name con il nome della tabella
  • Definire le colonne con i loro tipi di dati e definire anche se il supporto NULL/NO NULL valori
  • Menziona anche le colonne che contengono la chiave primaria e la chiave estera
  • Usa la dichiarazione Chiave straniera e menzionare in () i nomi delle colonne che sono chiavi straniere
  • Usa la clausola RIFERIMENTO e sostituire il genitore_table con il nome della tabella principale e menzionare le sue chiavi esterne

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)
Riferimenti Parent_table (parent_key_column)
Su aggiornamento
Su eliminazione;

Una spiegazione a questa sintassi è:

  • Scrivi la clausola di Chiave straniera e sostituire il "straniero_key_column" con il nome della tua chiave straniera
  • Sostituire il "parent_table" con il nome della tabella principale e anche "parent_key_columns" con il nome della chiave principale
  • Scrivi la clausola "su aggiornamento" e "su elimina" e sostituisci "" con l'azione che si desidera eseguire

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.