É ruim para usar o nome de usuário como chave primária em design de banco de dados?
-
22-07-2019 - |
Pergunta
Foi-me dito por um amigo:
O que chave única que você usa? espero que você não está salvando o nome completo do usuário --- este vai usar muito espaço mesa! Atribua um ID de usuário único para cada (Única) Nome de utilizador e guarde este userID (Deve ser INTEGER UNSIGNED auto_increment ou BIGINT UNSIGNED Incremento automático). Não se esqueça de criar uma referência
FOREIGN KEY (
userID
) REFERÊNCIASusertable
(userID
) em todas as tabelas usando o ID do usuário.
É a afirmação acima está correto? Por que ou por que não?
Solução
Eu acho que ele está certo (pelo motivo errado), porque a chave primária não pode mudar, mas username
pode mudar. Portanto, você deve usar userid
porque não mudaria.
Outras dicas
Ele está certo pelas razões erradas. O espaço de tabela é secundário para o fato de que a sua aplicação pode depois mandato que os nomes de usuário podem ser alteradas ou mesmo deixar de ser única (você poderia imaginar uma aplicação onde nomes de usuários únicos não são necessários, como Stack Overflow) e, assim, sua aplicação seria necessário grande refatoração e migração de dados, em vez de uma mudança de luz no outro (inteiro PK) caso.