Est-il mauvais d'utiliser le nom d'utilisateur comme clé primaire dans la conception de la base de données?

StackOverflow https://stackoverflow.com/questions/1825613

Question

Un ami m'a dit:

  

Quelle clé unique utilisez-vous? j'éspere que tu   ne sauvegardez pas le nom d'utilisateur complet   --- cela utilisera trop de place sur la table! Attribuer un ID utilisateur unique à chaque   (unique) userNAME et enregistrez cet ID utilisateur   (devrait être INTEGER UNSIGNED   auto_increment ou BIGINT UNSIGNED   incrémentation automatique). N'oublie pas de   créer une référence

     

FOREIGN KEY ( ID utilisateur ) RÉFÉRENCES    utilisable ( ID utilisateur ) dans toutes les tables   en utilisant l'ID utilisateur.

La déclaration ci-dessus est-elle correcte? Pourquoi ou pourquoi pas?

Était-ce utile?

La solution

Je pense qu'il a raison (pour la mauvaise raison) car la clé primaire ne peut pas changer, mais nom d'utilisateur peut changer. Vous devez donc utiliser userid car cela ne changera pas.

Autres conseils

Il a raison pour les mauvaises raisons. L'espace table est secondaire au fait que votre application pourrait éventuellement demander que les noms d'utilisateur puissent être changés ou même cesser d'être uniques (vous pouvez imaginer une application où les noms d'utilisateur uniques ne sont pas obligatoires, comme Stack Overflow). Par conséquent, votre application aurait besoin d'une refactorisation migration des données au lieu d’un léger changement dans l’autre cas (PK entier).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top