2010-01-27 14 views

risposta

8

Se non si desidera ottenere nomi utente duplicati, creare uno UNIQUE constraint.

Cosa succede se DWong1145 vuole cambiare il nome utente? Volete che tutte le relazioni del database siano UPDATE CASCADE?

+0

La mia domanda è nel contesto di un sistema di autenticazione che non consentire modifiche al nome utente. Avrei dovuto dirlo. –

+1

@Emanuil - per citare Jeff Goldblum in Jurassic Park, "La vita trova un modo". se hai bisogno di cambiare i tuoi nomi utente un giorno, potresti esserti pentito proprio in questo momento ... –

+0

"Informazioni" non dovrebbe essere usato come chiave; "dati" può "; 'data' non ha bisogno di essere cambiato, come se fosse sempre inteso per essere compreso da un programma. Cosa succede se chiamo SO e per chiedere di cambiare il mio utente _id_? Non posso farlo, ma posso cambiare il mio utente _nome_. –

4

Dal punto di vista del cliente, si scommette. Non voglio che il mio nome utente sia DWong1145.

7

NO, si deve solo uso nome utente come chiave unica/costante. Il nome utente può essere modificato, solo ed esempio: potrebbe essere un marchio e il proprietario ti chiede di lasciarlo.

+0

Suoni un po 'concisi;) Si * sono * giusti però. Odio i sistemi su cui non è possibile modificare il nome utente - tuttavia, l'OP ha detto nei commenti che non vuole che venga modificato, quindi ... –

5

È un buon candidato in un certo senso, tuttavia bisogna considerare se si vuole davvero farlo. Ad esempio, si dispone di un utente con un determinato nome utente, quindi l'utente viene "eliminato" (o contrassegnato come eliminato). Quindi, non c'è in realtà alcuna ragione per non permettere di creare un altro utente con lo stesso nome utente, ma è già "preso", poiché è una chiave primaria.

2

Un grande svantaggio di avere una stringa come chiave primaria, indipendentemente dal fatto che si tratti di un nome utente o qualcos'altro, è che tutte le colonne chiave esterne che fanno riferimento alla tabella dovranno essere anche stringhe, che sono entrambe più lente e sprecano più spazio.

+0

non deve essere più lento. un buon motore di database può pre-hash qualsiasi valore di stringa. Inoltre, l'utilizzo di chiavi naturali probabilmente eliminerà la necessità di molti join nell'applicazione, rendendo quindi le query più veloci. Accetto che le chiavi naturali generalmente consumino più spazio, ma onestamente, lo spazio è economico e abbondante. –

Problemi correlati