Chiave primaria vs chiave esterna: qual è la differenza?

Sommario:

Anonim

Prima di imparare la differenza tra chiave primaria e chiave esterna, impariamo:

Cosa sono le chiavi?

Le chiavi sono attributi che ti aiutano a identificare una riga (tupla) in una relazione (tabella). Ti permettono di trovare la relazione tra due tabelle. Le chiavi consentono di identificare in modo univoco una riga in una tabella mediante una combinazione di una o più colonne in quella tabella. La chiave del database è utile anche per trovare un record o una riga univoca dalla tabella.

Che cos'è la relazione con il database?

La relazione del database è costituita da associazioni tra una o più tabelle create utilizzando istruzioni di join. Viene utilizzato per recuperare in modo efficiente i dati dal database. Esistono principalmente tre tipi di relazioni: 1) Uno a uno, 2) Uno a molti, 3) Molti a molti.

Cos'è la chiave primaria?

Un vincolo di chiave primaria è una colonna o un gruppo di colonne che identifica in modo univoco ogni riga nella tabella del sistema di gestione del database relazionale. Non può essere un duplicato, il che significa che lo stesso valore non dovrebbe apparire più di una volta nella tabella.

Una tabella può avere più di una chiave primaria. La chiave primaria può essere definita a livello di colonna o di tabella. Se crei una chiave primaria composta, dovrebbe essere definita a livello di tabella.

Cos'è la chiave esterna?

La chiave esterna è una colonna che crea una relazione tra due tabelle. Lo scopo della chiave esterna è mantenere l'integrità dei dati e consentire la navigazione tra due diverse istanze di un'entità. Funge da riferimento incrociato tra due tabelle poiché fa riferimento alla chiave primaria di un'altra tabella. Ogni relazione nel database dovrebbe essere supportata da una chiave esterna.

PRINCIPALI DIFFERENZE:

  • Un vincolo di chiave primaria è una colonna che identifica in modo univoco ogni riga nella tabella del sistema di gestione del database relazionale, mentre la chiave esterna è una colonna che crea una relazione tra due tabelle.
  • La chiave primaria non accetta mai valori nulli mentre la chiave esterna può accettare più valori nulli.
  • Puoi avere solo una singola chiave primaria in una tabella mentre puoi avere più chiavi esterne in una tabella.
  • Il valore della chiave primaria non può essere rimosso dalla tabella padre mentre il valore del valore della chiave esterna può essere rimosso dalla tabella figlio.
  • Due righe non possono avere valori identici per una chiave primaria, mentre una chiave esterna può contenere valori duplicati.
  • Non ci sono limitazioni nell'inserimento dei valori nella colonna della tabella durante l'inserimento di qualsiasi valore nella tabella della chiave esterna, assicurarsi che il valore sia presente in una colonna di una chiave primaria.

Perché utilizzare la chiave primaria?

Ecco i contro / vantaggi dell'utilizzo della chiave primaria:

  • Lo scopo principale della chiave primaria è identificare ogni record nella tabella del database.
  • È possibile utilizzare una chiave primaria quando non si consente a qualcuno di immettere valori nulli.
  • Se elimini o aggiorni i record, verrà eseguita l'azione specificata per garantire l'integrità dei dati.
  • Esegui l'operazione di limitazione per rifiutare l'operazione di eliminazione o aggiornamento per la tabella padre.
  • I dati sono organizzati in una sequenza di indice cluster ogni volta che si organizza fisicamente la tabella DBMS.

Perché utilizzare la chiave esterna?

Ecco i motivi importanti per utilizzare la chiave esterna:

  • Le chiavi esterne ti aiutano a migrare le entità utilizzando una chiave primaria dalla tabella padre.
  • Una chiave esterna consente di collegare due o più tabelle insieme.
  • Rende i dati del database coerenti.
  • Una chiave esterna può essere utilizzata per abbinare una colonna o una combinazione di colonne con la chiave primaria in una tabella padre.
  • Il vincolo di chiave esterna SQL viene utilizzato per assicurarsi che l'integrità referenziale del genitore di dati corrisponda ai valori nella tabella figlio.

Esempio di chiave primaria

Sintassi:

Di seguito è riportata la sintassi della chiave primaria:

CREATE TABLE (Column1 datatype,Column2 datatype, PRIMARY KEY (Column-Name).);

Qui,

  • Table_Name è il nome della tabella che devi creare.
  • Column_Name è il nome della colonna con la chiave primaria.

Esempio:

StudID Rotolo n Nome di battesimo Cognome E-mail
1 11 Tom Prezzo Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo.
2 12 Nick Wright Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo.
3 13 Dana Natan Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo.

Nell'esempio sopra, abbiamo creato una tabella studenti con colonne come StudID, Roll No, First Name, Last Name ed Email. StudID viene scelto come chiave primaria perché può identificare in modo univoco altre righe nella tabella.

Esempio di chiave esterna

Sintassi:

Di seguito è riportata la sintassi della chiave esterna:

CREATE TABLE 
(column1 datatype,column2 datatype,constraint (name of constraint)FOREIGN KEY [column1, column2… ]REFERENCES [primary key table name] (List of primary key table column)… );

Qui,

  • Il parametro Nome tabella indica il nome della tabella che si intende creare.
  • I parametri colonna1, colonna2… rappresentano le colonne che devono essere aggiunte alla tabella.
  • Vincolo denota il nome del vincolo che stai creando.
  • I riferimenti indicano una tabella con la chiave primaria.

Esempio:

DeptCode DeptName
001 Scienza
002 inglese
005 Computer
ID insegnante Fname Lname
B002 David Ammonitore
B017 Sara Giuseppe
B009 Mike Brunton

Nell'esempio sopra, abbiamo due tabelle, un insegnante e un dipartimento in una scuola. Tuttavia, non è possibile vedere quale ricerca funziona in quale reparto.

In questa tabella, aggiungendo la chiave esterna in Deptcode al nome Insegnante, possiamo creare una relazione tra le due tabelle.

ID insegnante DeptCode Fname Lname
B002 002 David Ammonitore
B017 002 Sara Giuseppe
B009 001 Mike Brunton

Questo concetto è noto anche come integrità referenziale.

Differenza tra chiave primaria e chiave esterna

Ecco l'importante differenza tra chiave primaria e chiave esterna:

Chiave primaria Chiave esterna
Un vincolo di chiave primaria è una colonna o un gruppo di colonne che identifica in modo univoco ogni riga nella tabella del sistema di gestione del database relazionale. La chiave esterna è una colonna che crea una relazione tra due tabelle.
Ti aiuta a identificare in modo univoco un record nella tabella. È un campo nella tabella che è una chiave primaria di un'altra tabella.
La chiave primaria non accetta mai valori nulli. Una chiave esterna può accettare più valori null.
La chiave primaria è un indice cluster ei dati nella tabella DBMS sono organizzati fisicamente nella sequenza dell'indice cluster. Una chiave esterna non può creare automaticamente un indice, cluster o non cluster.
Puoi avere la singola chiave primaria in una tabella. Puoi avere più chiavi esterne in una tabella.
Il valore della chiave primaria non può essere rimosso dalla tabella padre. Il valore del valore della chiave esterna può essere rimosso dalla tabella figlio.
È possibile definire la chiave primaria in modo implicito nelle tabelle temporanee. Non è possibile definire chiavi esterne nelle tabelle temporanee locali o globali.
La chiave primaria è un indice cluster. Per impostazione predefinita, non è un indice cluster.
Due righe non possono avere valori identici per una chiave primaria. Una chiave esterna può contenere valori duplicati.
Non ci sono limitazioni nell'inserimento dei valori nella colonna della tabella. Durante l'inserimento di qualsiasi valore nella tabella della chiave esterna, assicurarsi che il valore sia presente in una colonna di una chiave primaria.