sql >> Database teknologi >  >> RDS >> Mysql

Mysql-databasedesign til kundens flere adresser og standardadresse

Efter min mening gør du det alt for komplekst. Der er ingen grund til at gøre dit adresseskema så overnormaliseret. De fleste systemer, jeg har set, der håndterer flere kundeadresser, har en kundetabel som din og har derefter en adressetabel som følger:

 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 er en fremmednøgle til customer bord. Den primære nøgle er en sammensætning af (customer_id , address_ordinal ). Den primary kolonnen er true hvis adressen er den primære.

Med hensyn til dit spørgsmål om leverandører, vil du måske lave en fælles tabel kaldet "kontakter", og give både dine kunder og leverandører contact_ids.

Hvis dit system indeholder en referencetabel (måske noget, du køber fra en dataleverandør), der indeholder (postnummer, lokalitet, provins) rækker, kan du bruge den til at hjælpe med at udfylde din adressetabel. Men du bør undgå at tvinge dine adresser til kun at indeholde hårdkodede postnumre:disse referencetabeller bliver meget hurtigt forældede.



  1. Brug af MySQL relationelle databaser på Arch Linux

  2. Sådan bruger du ROW_NUMBER i sqlite

  3. MySQL - Vælg fra en liste over tal dem uden modstykke i id-feltet i en tabel

  4. Hvorfor MySQL giver fejl Ikke tilladt at returnere et resultatsæt fra en funktion?