Ci sono alcune più differenze tra chiave primaria e candidata che discuterò con l'aiuto della tabella di confronto mostrata di seguito.
Grafico comparativo
Base per il confronto | Chiave primaria | Chiave candidata |
---|---|---|
Di base | Ci può essere solo una chiave primaria in ogni relazione. | Ci può essere più di una chiave candidata in una relazione. |
NULLO | Nessun attributo di una chiave primaria può contenere un valore NULL. | L'attributo di una chiave Candidate può avere valore NULL. |
Specificare | È facoltativo specificare una chiave primaria per qualsiasi relazione. | Non può esserci una relazione senza la chiave candidata specificata. |
caratteristica | La chiave primaria descrive l'attributo più importante per la relazione. | Le chiavi candidate presentano candidati idonei per la chiave primaria. |
Vice versa | Una chiave primaria è una chiave candidata. | Ma non è obbligatorio che ogni chiave candidata possa essere una chiave primaria. |
Definizione della chiave primaria
La chiave primaria è un attributo o un insieme di attributi che identificheranno in modo univoco ogni tupla in una relazione. Ci può essere solo una chiave primaria per ogni relazione. È necessario assicurarsi che una chiave primaria non contenga mai un valore NULL e che debba avere il valore univoco per ogni tupla nella relazione. I valori dell'attributo / i della chiave primaria devono essere statici, ovvero il valore dell'attributo non deve mai o raramente essere modificato.
Una delle Candidate Keys diventa qualificata per diventare una chiave primaria. Le regole che una chiave candidata deve qualificare per diventare primaria sono che il valore della chiave non dovrebbe mai essere NULL e deve essere univoco per tutte le tuple.
Se una relazione contiene un attributo che è una chiave primaria di un'altra relazione, allora tale attributo è chiamato chiave esterna .
Si consiglia di calcolare la chiave primaria di una relazione prima di introdurre altri attributi di una relazione poiché la chiave primaria identifica in modo univoco ciascuna tupla. È preferibile scegliere un singolo attributo o un piccolo numero di attributi come chiave primaria che semplifica la gestione delle relazioni.
Ora vediamo un esempio di una chiave primaria.
Studente {ID, Nome, Cognome, Età, Indirizzo}
Qui scopriremo per primi le chiavi candidate. Ho trovato due chiavi candidate {ID} e {First_name, Last_name} poiché identificheranno in modo univoco ogni studente nella relazione Student. Ora, qui sceglierò l' ID come mia chiave primaria, perché a volte può capitare che due studenti abbiano lo stesso nome e cognome, quindi sarà facile rintracciare uno studente con il suo ID .
Definizione di Candidate Key
Una chiave candidata è un attributo o un insieme di attributi che definiscono in modo univoco una tupla in una relazione. C'è una più di una chiave candidata in una relazione. Queste chiavi Candidate sono i candidati che possono qualificarsi per diventare una chiave primaria.
Sebbene ogni chiave candidata diventi una chiave primaria, solo una può essere scelta come chiave primaria. Le regole che una chiave candidata richiede per diventare chiave primaria sono che il valore dell'attributo della chiave non può mai essere NULL in qualsiasi dominio della chiave, deve essere univoco e statico .
Se tutte le chiavi candidate sono idonee per la chiave primaria, un DBA esperto deve prendere la decisione per capire la chiave primaria. Non ci può mai essere una relazione senza chiave del candidato.
Cerchiamo di capire la chiave del candidato con un esempio. Se aggiungiamo alcuni altri attributi alla relazione Student, ho discusso sopra.
Studente {ID, First_name, Cognome, Età, Indirizzo, DOB, Department_name}
Qui posso capire due chiavi candidate che sono {ID}, {First_name, Last_name, DOB} . Quindi puoi capire che le chiavi candidate sono una che identifica in modo univoco una tupla in una relazione.
Differenze chiave tra chiave primaria e candidata
- Il punto base che distingue la chiave primaria dalla chiave candidata è che può esserci un solo primario per qualsiasi relazione in uno schema. Tuttavia, possono esserci più chiavi candidate per una singola relazione.
- L'attributo sotto chiave primaria non può mai contenere un valore NULL poiché la funzione principale della chiave primaria consiste nell'identificare univocamente un record in relazione. Anche una chiave primaria può essere usata come chiave esterna in un'altra relazione, e quindi non deve essere NULL in modo tale che la relazione di riferimento possa trovare le tuple in una relazione referenziata. La chiave candidata può essere NULL a meno che il vincolo dell'attributo non sia specificato nullo.
- È facoltativo specificare una chiave primaria, ma non può esistere una relazione senza chiavi candidate.
- La chiave primaria descrive l'attributo unico e più importante di una relazione, mentre le chiavi candidate forniscono i candidati tra cui uno può essere selezionato come chiave primaria.
- Ogni chiave primaria è una chiave candidata, ma viceversa non è vera.
Conclusione:
È facoltativo per una relazione specificare una chiave primaria. D'altra parte, se stai dichiarando una relazione, le chiavi candidate devono essere presenti in quella relazione al fine di costruire una buona relazione.