Est-il mauvais d'utiliser le nom d'utilisateur comme clé primaire dans la conception de la base de données?
-
22-07-2019 - |
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ÉRENCESutilisable
(ID utilisateur
) dans toutes les tables en utilisant l'ID utilisateur.
La déclaration ci-dessus est-elle correcte? Pourquoi ou pourquoi pas?
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).