Cosa sono le chiavi esterne nei database SQL?

Cosa sono le chiavi esterne nei database SQL?

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 che memorizzano i dati su un'entità specifica. Se disponi di un database di autonoleggio, un'entità (o tabella) in quel database sarà 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 stipulazione sia che ogni record in una tabella dovrebbe essere distinto, non è sempre così. Continuando con l'esempio del database di noleggio auto, se il database contiene due clienti che hanno ciascuno il nome John Brown, ci si potrebbe aspettare che un John Brown restituisca una Mercedes-Benz che non ha noleggiato.



La creazione di una chiave primaria ridurrà questo rischio. In un sistema di gestione di database SQL, una chiave primaria è un identificatore univoco che distingue un record da un altro.

come trasferire da iPod a iTunes

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

Imparentato: Come creare una tabella in SQL





Ora ogni record del cliente che entra nel database avrà un numero di identificazione univoco, oltre a nome, cognome e numero di telefono. Il numero di telefono non è abbastanza univoco per essere una chiave primaria, perché sebbene sia univoco 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 un esempio di chiave primaria

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

Il codice SQL sopra aggiungerà un nuovo record al preesistente Clienti tavolo. La tabella seguente mostra la tabella dei nuovi clienti con i due record John Brown.

La chiave straniera

Ora disponi di chiavi primarie che distinguono in modo univoco un noleggiatore di auto da un altro. L'unico problema è che, nel database, non c'è un vero collegamento 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à è possibile solo se la chiave primaria funge anche da chiave esterna.

Che 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 prima identificare quale tabella è l'oggetto e quale è l'oggetto nella loro relazione.

Tornando al database dell'autonoleggio, per collegare 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 un esempio di chiave esterna

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Come puoi vedere nel codice sopra, una chiave esterna deve essere esplicitamente identificata come tale, insieme a un riferimento alla chiave primaria che viene collegata alla nuova tabella.

due persone possono guardare Netflix contemporaneamente?

Imparentato: Il cheat sheet 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.

Aggiunta di un record con un esempio di chiave esterna

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

Il codice sopra crea un nuovo record nel nuovo Macchine tabella, producendo il seguente risultato.

Tabella delle auto

Dalla tabella sopra, puoi identificare il corretto John Brown che noleggia una Mercedes-Benz con la chiave esterna nel record.

Chiavi esterne anticipate

Esistono altri due modi per utilizzare una chiave esterna in un database.

Se guardi indietro alla definizione di 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 noleggio auto, vedrai che la creazione di un nuovo record (della stessa auto) ogni volta che un cliente noleggia quell'auto, vanifica lo scopo del Macchine 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 composita 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 del noleggio auto, l'approccio più pratico consiste nel creare una nuova tabella che memorizzi i dettagli del noleggio. Affinché le informazioni nella tabella dell'autonoleggio siano utili, deve connettersi sia alla tabella dell'auto che a quella del cliente.

Creazione di una tabella con chiavi esterne composite

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

Il codice sopra illustra un punto importante; sebbene una tabella in un database SQL possa avere più di una chiave esterna, può avere solo una 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 DataAffitto non è una buona combinazione) più di un cliente può anche noleggiare la stessa auto nello stesso giorno (quindi Numero di licenza e DataAffitto non è una buona combinazione).

Tuttavia, la creazione di una chiave composita che indichi quale cliente, quale auto e in quale giorno rende un'ottima chiave unica. Questa chiave univoca rappresenta sia una chiave esterna composita che una chiave primaria composita.

cosa fa la modalità batteria scarica?

Chiavi primarie esterne

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).

Say Fred (che lavora presso la società di autonoleggio) è nel database della società sotto la tabella dei dipendenti. Dopo alcuni anni, diventa supervisore e viene aggiunto alla tabella dei supervisori.

Fred è ancora un dipendente e avrà ancora lo stesso numero identificativo. Quindi l'ID dipendente di Fred è ora nella tabella supervisore come chiave esterna che diventerà anche una chiave primaria in quella tabella (poiché non ha senso creare un nuovo numero ID per Fred ora che è un supervisore).

Ora puoi identificare le chiavi esterne nei database SQL

Le chiavi esterne connettono diverse tabelle all'interno di un database SQL. Da questo articolo, puoi vedere cos'è una chiave esterna, come funziona e perché è importante averle in un database. Comprendi anche le forme di base e ancora più complesse delle chiavi esterne.

Se pensi che le chiavi esterne siano interessanti, avrai una giornata campale quando inizierai a utilizzare il progetto e le operazioni di selezione per interrogare i tuoi database SQL.

Condividere Condividere Tweet E-mail Scopri come utilizzare le operazioni di progetto e selezione in SQL

Prendi confidenza con i database relazionali SQL comprendendo le operazioni di progetto e selezione con questi esempi.

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Programmazione
  • SQL
  • Banca dati
Circa l'autore Kadeisha Kean(21 articoli pubblicati)

Kadeisha Kean è uno sviluppatore software full-stack e scrittore tecnico/tecnologico. Ha la spiccata capacità di semplificare alcuni dei concetti tecnologici più complessi; producendo materiale che può essere facilmente compreso da qualsiasi principiante della tecnologia. È appassionata di scrivere, sviluppare software interessanti e viaggiare per il mondo (attraverso documentari).

Altro da Kadeisha Kean

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti