È male usare il nome utente come chiave primaria nella progettazione del database?
-
22-07-2019 - |
Domanda
Mi è stato detto da un amico:
Quale chiave univoca usi? spero che tu non stanno salvando l'intero nome utente --- questo utilizzerà troppo spazio sul tavolo! Assegnare un ID utente univoco a ciascuno (unico) userNAME e salva questo ID utente (dovrebbe essere INTEGER UNSIGNED auto_increment o BIGINT UNSIGNED Incremento automatico). Non dimenticare di creare un riferimento
RIFERIMENTI CHIAVE ESTERO (
userID
)usertable
(userID
) in tutte le tabelle utilizzando l'ID utente.
L'istruzione precedente è corretta? Perché o perché no?
Soluzione
Penso che abbia ragione (per la ragione sbagliata) perché la chiave primaria non può cambiare, ma username
può cambiare. Quindi dovresti usare userid
perché non cambierebbe.
Altri suggerimenti
Ha ragione per le ragioni sbagliate. Il tablespace è secondario al fatto che la tua app potrebbe in seguito imporre che i nomi utente possano essere modificati o addirittura smettere di essere univoci (potresti immaginare un'applicazione in cui non sono richiesti nomi utente univoci, come Stack Overflow) e quindi la tua app avrebbe bisogno di importanti refactoring e migrazione dei dati invece di un leggero cambiamento nell'altro caso (intero PK).