Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conception de base de données MySQL pour les adresses multiples du client et l'adresse par défaut

À mon avis, vous rendez cela beaucoup trop complexe. Il n'est pas nécessaire de rendre votre schéma d'adresse si sur-normalisé. La plupart des systèmes que j'ai vus et qui gèrent plusieurs adresses de clients ont une table de clients comme la vôtre, puis une table d'adresses, comme suit :

 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 est une clé étrangère vers le customer table. La clé primaire est un composé de (customer_id , address_ordinal ). Le primary la colonne est true si l'adresse est la principale.

En ce qui concerne votre question sur les fournisseurs, vous souhaiterez peut-être créer une table commune appelée "contacts" et donner à la fois à vos clients et à vos fournisseurs des identifiants de contact.

Si votre système contient une table de référence (peut-être quelque chose que vous achetez auprès d'un fournisseur de données) contenant des lignes (code postal, localité, province), vous pouvez l'utiliser pour vous aider à remplir votre table d'adresses. Mais vous devez éviter de forcer vos adresses à ne contenir que des codes postaux codés en dur :ces tableaux de référence deviennent très rapidement obsolètes.