O banco ta assim, aqui da pra ter uma ideia melhor: https://prnt.sc/PP9iuleWl-XD
Ali na tabela endereço estou declarando a rua, mas poderia criar uma tabela para rua e deixar a de endereco para armazenar as fks.
Uma outra duvida, seria possivel não ter de cadastrar todas as cidades do Brasil em uma tabela? Eu queria fazer algo que conforme seja cadastrado pelo user, a cidade ou rua, o proximo cadastro ja buscasse desse antigo, sem duplicar.