Se você quer criar uma tabela e relacionar a outras você vai precisar criar as chaves estrangeiras sim.
Mas se pergunte se poderá haver mais de uma entrada para este relacionamento, por exemplo: Um usuário poderá ter vários endereços? Se sim, crie uma tabela chamada enderecos
separada da tableta usuarios
e a relacione. Um usuário pode ter vários gêneros? Não, então crio um campo simples na tabela de usuarios
.
Pesquise sobre normalização de banco de dados para entender todos os casos. Acho válido separar dados em diferentes tabelas e criar estes relacionamentos se os dados pertencem a um domínio/escopo definido ou se essa tabela pode ser "reutilizada", digamos assim.
Eu manteria gênero como um campo simples (booleano ou não), até facilitaria na hora de fazer a consulta.