sql >> Base de Datos >  >> RDS >> Mysql

Diseño de base de datos Mysql para múltiples direcciones de clientes y direcciones predeterminadas

En mi opinión, estás haciendo esto demasiado complejo. No hay necesidad de hacer que el esquema de su dirección esté demasiado normalizado. La mayoría de los sistemas que he visto que manejan múltiples direcciones de clientes tienen una tabla de clientes como la suya, y luego tienen una tabla de direcciones, de la siguiente manera:

 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 es una clave foránea para el customer mesa. La clave principal es un compuesto de (customer_id , address_ordinal ). El primary la columna es true si la dirección es la principal.

Con respecto a su pregunta sobre los proveedores, es posible que desee crear una tabla común llamada "contactos" y proporcionar tanto a sus clientes como a sus proveedores contact_ids.

Si su sistema contiene una tabla de referencia (tal vez algo que compre de un proveedor de datos) que contenga filas (código postal, localidad, provincia), puede usarla para completar su tabla de direcciones. Pero debe evitar obligar a sus direcciones a que solo contengan códigos postales codificados:esas tablas de referencia quedan obsoletas muy rápido.