Domanda Qual è la differenza tra una chiave candidata e una chiave primaria?


È che una chiave primaria è la chiave candidata selezionata scelta per una data tabella?


36
2017-10-10 06:36


origine


risposte:


Candidate Key - Una chiave candidata può essere una qualsiasi colonna o una combinazione di colonne che può qualificarsi come chiave unica nel database. Ci possono essere più Candidate Keys in una tabella. Ogni chiave candidata può essere considerata come chiave primaria.

Primary Key - Una chiave primaria è una colonna o una combinazione di colonne identificare univocamente un record. Solo una chiave candidata può essere chiave primaria.

Maggiori informazioni su questo link con l'esempio


76
2017-10-10 06:37



La risposta di John Woo è corretta, per quanto va. Ecco alcuni punti aggiuntivi.

Una chiave primaria è sempre una delle chiavi candidate. Abbastanza spesso, è l'unico candidato.

Una tabella senza chiavi candidate non rappresenta una relazione. Se stai usando il modello relazionale per aiutarti a costruire un buon database, ogni tabella che hai progettato avrà almeno una chiave candidata.

Il modello relazionale sarebbe completo senza il concetto di chiave primaria. Non era nella presentazione originale del modello relazionale. In pratica, l'uso di riferimenti di chiavi estranee senza una chiave primaria dichiarata porta a un pasticcio. Potrebbe essere un disastro logicamente corretto, ma è comunque un casino. La dichiarazione di una chiave primaria consente al DBMS di aiutarti a far rispettare le regole dei dati. La maggior parte delle volte, avere il DBMS ti aiuta a far rispettare le regole dei dati è una buona cosa, e ne vale la pena.

Alcuni progettisti di database e alcuni utenti hanno una certa confusione mentale sul fatto che la chiave primaria identifichi una riga (record) in una tabella o un'istanza di un'entità nell'oggetto che la tabella rappresenta. In un mondo ideale, dovrebbe fare entrambe le cose, e dovrebbe esserci una corrispondenza uno a uno tra le righe in una tabella delle entità e le istanze dell'entità corrispondente.

Nel mondo reale, le cose si incasinano. Qualcuno entra due volte nello stesso nuovo impiegato e l'impiegato finisce con due identificativi. Qualcuno viene assunto, ma l'inserimento dei dati scivola attraverso le fessure in alcuni processi manuali, e il dipendente non ottiene un ID, finché l'omissione non viene corretta. Un database che non collassa la prima volta che le cose si rovinano è più robusto di quello che fa.


19
2017-10-10 11:13



Chiave primaria -> Qualsiasi colonna o set di colonne che possono identificare univocamente un record nella tabella è una chiave primaria. (Ci può essere solo una chiave primaria sul tavolo)

Chiave candidata -> Qualsiasi colonna o set di colonne che sono candidato a diventare la chiave primaria sono la chiave Candidate. (Ci può essere una o più chiavi candidate nella tabella, se c'è una sola chiave candidata, può essere scelta come chiave primaria)


8
2017-10-10 07:04



Non c'è differenza. Una chiave primaria è una chiave candidata. Per convenzione, una chiave del candidato in una relazione viene solitamente scelta come "primaria", ma la scelta è essenzialmente arbitraria e una questione di convenienza per gli utenti / designer / sviluppatori di database. Non rende la chiave "primaria" fondamentalmente diversa da qualsiasi altra chiave candidata.


6
2017-10-10 08:33



Una chiave primaria è un tipo speciale di indice in quanto:

there can be only one;
it cannot be nullable
it must be unique.

Le chiavi candidate sono selezionate dall'insieme di super chiavi, l'unica cosa che dobbiamo fare attenzione durante la selezione della chiave candidata è: Non dovrebbe avere alcun attributo ridondante.

Esempio di una tabella Employee: Dipendente ( ID Dipendente, Nome e cognome, SSN, deptid )

  1. Candidate Key: sono le singole colonne in una tabella che si qualifica per l'unicità di tutte le righe. Qui nella tabella Employee EmployeeID e SSN sono le chiavi Candidate.

  2. Chiave primaria: sono le colonne che scegli di mantenere l'unicità in una tabella. Qui nella tabella Dipendente è possibile scegliere tra colonne EmployeeID o SSN, EmployeeID è la scelta preferibile, poiché SSN è un valore sicuro.

  3. Chiave alternativa: colonna Candidate diversa dalla colonna Primaria, ad esempio se EmployeeID è PK, quindi SSN sarebbe la chiave alternativa.

  4. Super Key: se aggiungi un'altra colonna / attributo a una chiave primaria diventa una chiave super, come EmployeeID + FullName è una super chiave.

  5. Chiave composta: se una tabella ha una singola colonna che si qualifica per una chiave Candidato, devi selezionare 2 o più colonne per rendere una riga univoca. Come se non ci fossero colonne EmployeeID o SSN, allora puoi rendere FullName + DateOfBirth come chiave primaria composta. Ma ancora ci può essere una possibilità limitata di riga duplicata.


3
2017-11-16 23:24



Una tabella può avere così tante colonne che possono identificare in modo univoco una riga. Queste colonne sono indicate come chiavi del candidato, ma chiave primaria dovrebbe essere uno di questi perché una chiave primaria è sufficiente per un tavolo. Quindi selezione di chiave primaria è importante tra così molti candidati chiave. Questa è la differenza principale.


2
2018-01-10 04:32



Pensa a un tavolo di veicoli con una chiave primaria intera.

Il numero di registrazione sarebbe una chiave candidata.

Nel mondo reale i numeri di registrazione sono soggetti a modifiche, quindi dipende in qualche modo dalle circostanze che potrebbero qualificarsi come una chiave candidata.


1
2017-10-10 08:01



Una chiave primaria è una colonna (o colonne) in una tabella che identifica in modo univoco le righe in quella tabella.

CUSTOMERS


CustomerNo  FirstName   LastName
1   Sally   Thompson
2   Sally   Henderson
3   Harry   Henderson
4   Sandra  Wellington

Ad esempio, nella tabella sopra, CustomerNo è la chiave primaria.

I valori posizionati nelle colonne chiave primaria devono essere univoci per ogni riga: non è possibile tollerare duplicati. Inoltre, i null non sono consentiti nelle colonne della chiave primaria.

Quindi, dopo averti detto che è possibile utilizzare una o più colonne come chiave primaria, come decidi quali colonne (e quante) scegliere?

Bene, ci sono momenti in cui è consigliabile o essenziale utilizzare più colonne. Tuttavia, se non riesci a vedere un motivo immediato per utilizzare più colonne, quindi usane una. Questa non è una regola assoluta, è semplicemente un consiglio. Tuttavia, le chiavi primarie composte da singole colonne sono generalmente più facili da gestire e più veloci nel funzionamento. Ciò significa che se si interroga il database, di solito si ottiene la risposta più velocemente se le tabelle hanno chiavi primarie a colonna singola.

Prossima domanda: quale colonna scegliere? Il modo più semplice per scegliere una colonna come chiave primaria (e un metodo che è ragionevolmente utilizzato) è quello di far sì che il database stesso assegni automaticamente un numero univoco a ciascuna riga.

In una tabella di dipendenti, chiaramente qualsiasi colonna come FirstName è una scelta sbagliata dal momento che non è possibile controllare i nomi dei dipendenti. Spesso esiste una sola scelta per la chiave primaria, come nel caso precedente. Tuttavia, se ne esiste più di uno, questi possono essere descritti come "chiavi del candidato" - il nome riflette che sono candidati per il lavoro responsabile della chiave primaria.


0
2018-02-23 08:57



Se superkey è un grande set di chiavi candidate è un insieme più piccolo all'interno di big set e chiave primaria qualsiasi elemento (uno alla volta o per una tabella) nel set di chiavi candidato.


0
2017-11-30 19:55