Eu sou um novato em bancos de dados. Eu li e descobri que provavelmente não é uma boa idéia usar o endereço de email como chave primária, porque as comparações de string são mais lentas, o que afeta o desempenho em junções complexas e, se um email mudar, eu teria que alterar todas as chaves estrangeiras, o que exige muito de esforço.
Mas se minha tabela de usuários exigir que todos os usuários tenham um endereço de email e cada um desses endereços seja único, será suficiente adicionar um índice exclusivo na coluna de email? Como os campos exclusivos do afaik permitem valores nulos, enquanto eu exijo que todo usuário tenha um endereço de email, não permitindo valores nulos. Há algo que estou perdendo aqui? Ou eu suponho que a coluna de email seja única e verifique durante a validação de dados no servidor que o usuário insira um endereço de email para que todo usuário tenha um?