@meira você consegue exemplificar quais são as ligações entre essas tabelas?
Se eu consegui entender bem, o que está acontecendo é que para cada novo cadastro que contém essas informações está duplicando as informações dentro do banco de dados correto?
Essa tabela do seu print seria uma tabela para armazenar as cidades?
Aparentemente você possui uma tabela para cada um desses modelos que você citou. Seria isso mesmo? Uma tabela para cidade, uma para estado e outra para endereço. Correto?
Se for isso mesmo, você poderia ter uma tabela extra que armazenaria todas as referências de chave estrangeira das outras tabelas que citei acima:
endereco_usuario
id | endereco_fk |
onde essa tabela faz referencia ao endereço em formato de chave estrangeira, que por sua vez faz referência à cidade
endereco
id | cidade_fk
onde essa tabela faz referência à cidade em formato de chave estrangeira e por fim, a cidade faz referênca ao estado
cidade
id | estado_fk
Perceba que aqui você terá uma tabela de estado
contendo todos os estados do Brasil por exemplo, uma tabela de cidade
que faz referência aos estados (onde você terá várias cidades para um mesmo estado por exemplo), uma tabela de endereços
que faz referência a uma cidade (também podendo conter várias cidades para a mesma cidade) e a última, caso seja realmente isso, poderia ser uma tabela de endereco_usuario
onde vc faz referência somente a primary key de um endereço.
Acho que ficaria algo assim
1 estado ----------> N cidades
1 cidade ----------> N enderecos
No final, se vc souber o ID de um endereço, você saberá a FK de uma cidade e na cidade vc sabe a FK do estado.
Se precisar, existe DB Diagram, que te ajuda no mapeamento de relações entre as tabelas