Le chiavi esterne consentono agli amministratori di database di identificare facilmente le diverse connessioni esistenti all'interno di un sistema di gestione di database SQL.
SQL esegue operazioni matematiche sui dati all'interno di un sistema di gestione di database. Questi database contengono diverse tabelle in cui ciascuna memorizza i dati su un'entità specifica. Se hai un database di autonoleggio, un'entità (o una tabella) in quel database saranno i clienti (che memorizzerà tutti i dati personali su ciascun cliente).
Queste tabelle di database contengono righe e colonne, in cui ogni riga ospita un record e ogni colonna contiene dati specifici dell'attributo.
In un sistema di gestione di database, ogni record (o riga) dovrebbe essere univoco.
Chiavi primarie
Sebbene la clausola sia che ogni record in una tabella debba essere distinto, non è sempre così. Continuando con l'esempio del database di autonoleggio, se il database contiene due clienti ciascuno hanno il nome "John Brown", ci si può aspettare che un John Brown restituisca una Mercedes-Benz che non ha affitto.
La creazione di una chiave primaria mitigherà questo rischio. In un sistema di gestione di database SQL, una chiave primaria è un identificatore univoco che distingue un record da un altro.
Pertanto, ogni record in un sistema di gestione di database SQL dovrebbe avere una chiave primaria.
Utilizzo delle chiavi primarie in un database
Per includere le chiavi primarie in un sistema di gestione del database utilizzando SQL, puoi semplicemente aggiungerlo come un normale attributo durante la creazione di una nuova tabella. Quindi la tabella dei clienti conterrà quattro attributi (o colonne):
- CarOwnerID (che memorizzerà la chiave primaria)
- Nome di battesimo
- Cognome
- Numero di telefono
Relazionato: Come creare una tabella in SQL
Ora ogni record del cliente che entra nel database avrà un numero di identificazione univoco, oltre a un nome, un cognome e un numero di telefono. Il numero di telefono non è abbastanza unico per essere una chiave primaria, perché sebbene sia unico per una persona alla volta, una persona può facilmente cambiare il proprio numero, il che significa che ora apparterrebbe a qualcun altro.
Un record con una chiave primaria Esempio
/ * crea un nuovo record nella tabella dei clienti * /
INSERISCI NEI VALORI DEI CLIENTI
('0004',
'John',
'Marrone',
'111-999-5555');
Il codice SQL sopra aggiungerà un nuovo record a quello preesistente Clienti tavolo. La tabella seguente mostra la nuova tabella clienti con i due record John Brown.
La chiave esterna
Ora hai le chiavi primarie che distinguono in modo univoco un noleggiatore di auto da un altro. L'unico problema è che, nel database, non c'è una reale connessione tra ogni John Brown e l'auto che noleggia.
Pertanto, esiste ancora la possibilità di commettere un errore. È qui che entrano in gioco le chiavi esterne. L'utilizzo di una chiave primaria per risolvere il problema dell'ambiguità della proprietà è realizzabile solo se la chiave primaria funge anche da chiave esterna.
Cos'è una chiave esterna?
In un sistema di gestione di database SQL, una chiave esterna è un identificatore univoco o una combinazione di identificatori univoci che connettono due o più tabelle in un database.
Dei quattro sistemi di gestione di database SQL esistenti, il sistema di gestione di database relazionali è il più popolare. Quando si decide quale tabella in un database relazionale deve avere una chiave esterna, è necessario innanzitutto identificare quale tabella è il soggetto e quale è l'oggetto nella loro relazione.
Tornando al database dell'autonoleggio, per connettere ogni cliente all'auto corretta dovrai capire che un cliente (il soggetto) noleggia un'auto (l'oggetto). Pertanto, la chiave esterna dovrebbe essere nella tabella delle auto.
Il codice SQL che genera una tabella con una chiave esterna è leggermente diverso dalla norma.
Creazione di una tabella con una chiave esterna Esempio
/ * crea una nuova tabella di auto nel database di autonoleggio * /
CREA TABELLA Auto
(
LicenseNumber varchar (30) NOT NULL PRIMARY KEY,
CarType varchar (30) NOT NULL,
CustomerID varchar (30) RIFERIMENTI CHIAVE ESTERI Clienti (CustomerID)
);
Come puoi vedere nel codice sopra, una chiave esterna deve essere identificata esplicitamente come tale, insieme a un riferimento alla chiave primaria che viene collegata alla nuova tabella.
Relazionato: Il foglio illustrativo dei comandi SQL essenziali per principianti
Per aggiungere un record alla nuova tabella, devi assicurarti che il valore nel campo della chiave esterna corrisponda al valore nel campo della chiave primaria della tabella originale.
Esempio di aggiunta di un record con una chiave esterna
/ * crea un nuovo record nella tabella delle auto * /
INSERISCI IN VALORI AUTO
('100012',
"Mercedes-Benz",
'0004');
Il codice precedente crea un nuovo record nel nuovo Automobili tabella, producendo il seguente risultato.
Tavolo Cars
Dalla tabella sopra, puoi identificare il John Brown corretto che noleggia una Mercedes-Benz con la chiave straniera nel record.
Chiavi esterne avanzate
Esistono altri due modi per utilizzare una chiave esterna in un database.
Se guardi indietro alla definizione di una chiave esterna sopra, scoprirai che dice che una chiave esterna può essere un identificatore univoco o una combinazione di identificatori univoci.
Tornando all'esempio del database di autonoleggio, vedrai che creare un nuovo record (della stessa auto) ogni volta che un cliente noleggia quell'auto, vanifica lo scopo del Automobili tavolo. Se le auto sono in vendita e vengono vendute a un solo cliente una volta, il database esistente è perfetto; ma dato che le auto sono a noleggio c'è un modo migliore per rappresentare questi dati.
Tasti compositi
Una chiave composta ha due o più identificatori univoci. In un database relazionale, ci saranno casi in cui l'uso di una singola chiave esterna non rappresenterà sufficientemente le relazioni esistenti all'interno di quel database.
Nell'esempio dell'autonoleggio, l'approccio più pratico è creare una nuova tabella che memorizzi i dettagli dell'affitto. Affinché le informazioni nella tabella del noleggio auto siano utili, è necessario collegarsi sia alle tabelle dell'auto che a quelle dei clienti.
Creazione di una tabella con chiavi esterne composte
/ * crea una tabella CarRental nel database di autonoleggio * /
CREA TABELLA CarRental
(
DataAffitto DATA NON NULLA,
LicenseNumber varchar (30) NOT NULL RIFERIMENTI CHIAVE ESTERI Cars (LicenseNumber),
CustomerID varchar (30) NOT NULL RIFERIMENTI CHIAVE ESTERI Clienti (CustomerID),
CHIAVE PRIMARIA (DateRented, LicenseNumber, CustomerID)
);
Il codice sopra rappresenta un punto importante; sebbene una tabella in un database SQL possa avere più di una chiave esterna, può avere solo una singola chiave primaria. Questo perché dovrebbe esserci un solo modo univoco per identificare un record.
È necessario combinare tutti e tre gli attributi nella tabella per avere una chiave univoca. Un cliente può noleggiare più di un'auto nello stesso giorno (quindi Identificativo del cliente e DateRented non è una buona combinazione) più di un cliente può anche noleggiare la stessa auto nello stesso giorno (quindi Numero di licenza e DateRented non è una buona combinazione).
Tuttavia, la creazione di una chiave composita che racconta quale cliente, quale macchina e in quale giorno rende un'ottima chiave unica. Questa chiave univoca rappresenta sia una chiave esterna composita che una chiave primaria composita.
Chiavi primarie straniere
Oh sì, le chiavi primarie esterne escono. Sebbene non esista un nome ufficiale, una chiave esterna può anche essere una chiave primaria nella stessa tabella. Ciò accade quando crei una nuova tabella che contiene dati specializzati su un'entità esistente (o record in un'altra tabella).
Supponiamo che Fred (che lavora presso la società di autonoleggio) sia nel database dell'azienda sotto la tabella dei dipendenti. Dopo alcuni anni diventa supervisore e viene aggiunto al tavolo dei supervisori.
Fred è ancora un dipendente e avrà ancora lo stesso numero di identificazione. Quindi l'ID dipendente di Fred è ora nella tabella del supervisore come chiave esterna che diventerà anche primaria digitare quella tabella (poiché non ha senso creare un nuovo numero ID per Fred ora che è un supervisore).
Ora puoi identificare chiavi esterne nei database SQL
Le chiavi esterne collegano diverse tabelle all'interno di un database SQL. Da questo articolo, puoi vedere cos'è una chiave esterna, come funziona e perché è importante averla in un database. Comprendi anche le forme di base e ancora più complesse delle chiavi esterne.
Se ritieni che le chiavi esterne siano interessanti, avrai una giornata campale in cui inizierai a utilizzare il progetto e le operazioni di selezione per interrogare i tuoi database SQL.
Prendi confidenza con i database relazionali SQL comprendendo le operazioni di progetto e selezione con questi esempi.
Leggi Avanti
- Programmazione
- Programmazione
- SQL
- Banca dati
Kadeisha Kean è uno sviluppatore di software full-stack e uno scrittore tecnico / tecnologico. Ha la spiccata capacità di semplificare alcuni dei concetti tecnologici più complessi; produrre materiale che può essere facilmente compreso da qualsiasi principiante della tecnologia. È appassionata di scrittura, sviluppo di software interessanti e viaggi per il mondo (attraverso documentari).
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!
Ancora un passo…!
Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.