Mysql
 sql >> Database >  >> RDS >> Mysql

Chiavi primarie MySQL

Spiega cos'è una chiave primaria e perché è parte integrante dei database relazionali.

Quando abbiamo creato le nostre due tabelle, abbiamo creato anche una chiave primaria per ciascuna tabella.

Quando espandi i nodi in SCHEMAS a sinistra scheda, puoi vedere le chiavi primarie (e le chiavi esterne, arriveremo a quelle successive) elencate sotto ogni tabella:

Come mostra lo screenshot di accompagnamento, gli Indici i nodi contengono qualsiasi indice (nel nostro caso chiavi esterne e/o chiavi primarie). Queste chiavi primarie e chiavi esterne sono lì solo perché le abbiamo specificate nel nostro codice quando abbiamo creato le tabelle.

In particolare, abbiamo utilizzato PRIMARY KEY (FruitId) per creare il FruitId colonna la chiave primaria per il Frutto tabella e abbiamo usato PRIMARY KEY (UnitId) per creare UnitId colonna la chiave primaria per le Unità tabella.

Cos'è una chiave primaria?

Una chiave primaria (indicato anche come chiave univoca ) è una colonna che è stata allocata come campo dell'identificatore univoco. Il valore in una colonna della chiave primaria è univoco per ogni record. In altre parole, nessun record può condividere lo stesso valore su quella colonna.

Un classico esempio di campo chiave primaria è un campo "ID". La maggior parte delle tabelle avrà un campo ID che fornisce un identificatore univoco per ogni record. Gli esempi potrebbero includere "CustomerId", "ProductId", "FruitId", ecc. Senza campi ID come questi la funzione del tuo database sarebbe gravemente ostacolata. Se avessi due o più clienti con lo stesso nome, come saresti in grado di trovare il loro record? Sebbene sia vero che potresti trovare qualcosa di unico in ogni record, è molto più semplice e pulito avere una colonna il cui scopo principale è fornire un'identificazione univoca per ogni record.

Un valore primario può essere un valore normale garantito come univoco (un numero ISBN per libri, codice prodotto, ecc.), oppure può essere un valore generato dall'applicazione o dal DBMS specificatamente univoco (come un valore univoco globale identificatore o numero intero a incremento automatico).

Scelta di una chiave primaria

Fai attenzione quando scegli una colonna per la tua chiave primaria. Devi assicurarti che ogni record ne abbia uno e che non sia possibile che due record condividano lo stesso valore o che un record abbia più di un valore.

Ad esempio, l'utilizzo dell'indirizzo e-mail dell'utente potrebbe funzionare in alcuni casi, ma non è una base molto solida per un identificatore univoco. Gli utenti possono modificare il proprio indirizzo e-mail. Gli utenti possono condividere indirizzi e-mail. Alcuni utenti potrebbero non avere un indirizzo email. Naturalmente, potresti scrivere il tuo sistema per impedire agli utenti di modificare il loro indirizzo email o condividerlo, ma il tuo sistema non sarebbe molto flessibile o facile da usare.

Potresti richiedere a tutti gli utenti di avere un nome utente univoco. Potrebbe funzionare. Tuttavia, è necessario pensare attentamente a tutte le possibilità. Se c'è la possibilità che gli utenti possano modificarlo o condividerlo (passato, presente o futuro), non usarlo come chiave primaria. Cosa succede se "TechGuy12" disattiva il suo account. Ciò significa che un altro utente può ora utilizzare "TechGuy12"? Sarà un problema per la tua applicazione o per eventuali rapporti che devi generare?

In caso di dubbi sull'"unicità" del campo della chiave primaria, utilizza un numero generato automaticamente che aumenta con ogni record creato.