Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Design de banco de dados MySQL para vários endereços de clientes e endereço padrão


Na minha opinião você está tornando isso muito complexo. Não há necessidade de tornar seu esquema de endereço tão normalizado. A maioria dos sistemas que vi que lidam com vários endereços de clientes têm uma tabela de clientes como a sua e, em seguida, uma tabela de endereços, da seguinte forma:
 customer_id
 address_ordinal  (small number for each customer: 0,1,2,3 etc).
 primary    (boolean)
 address_1
 address_2
 locality   (city, village, etc)
 province   (state, etc)
 postcode   (zip, postcode etc)
 country

customer_id é uma chave estrangeira para o customer tabela. A chave primária é um composto de (customer_id , address_ordinal ). O primary coluna é true se o endereço for o principal.

Em relação à sua pergunta sobre fornecedores, convém criar uma tabela comum chamada "contatos" e fornecer a seus clientes e fornecedores contact_ids.

Se o seu sistema contiver uma tabela de referência (talvez algo que você compre de um fornecedor de dados) contendo linhas (código postal, localidade, província), você poderá usá-la para ajudar a preencher sua tabela de endereços. Mas você deve evitar forçar seus endereços a conter apenas códigos postais codificados:essas tabelas de referência ficam desatualizadas muito rapidamente.