sql >> Databasteknik >  >> RDS >> Mysql

Mysql-databasdesign för kundens flera adresser och standardadress

Enligt min åsikt gör du det här alldeles för komplicerat. Det finns ingen anledning att göra ditt adressschema så övernormaliserat. De flesta system som jag har sett som hanterar flera kundadresser har en kundtabell som din och har sedan en adresstabell enligt följande:

 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 är en främmande nyckel till customer tabell. Den primära nyckeln är en sammansättning av (customer_id , address_ordinal ). Den primary kolumnen är true om adressen är den primära.

Angående din fråga om leverantörer, kanske du vill skapa en gemensam tabell som heter "kontakter", och ge både dina kunder och leverantörer contact_ids.

Om ditt system innehåller en referenstabell (kanske något du köper från en dataleverantör) som innehåller (postnummer, ort, provins) rader, kan du använda den för att fylla i din adresstabell. Men du bör undvika att tvinga dina adresser att bara innehålla hårdkodade postnummer:dessa referenstabeller blir väldigt fort inaktuella.



  1. SQL Count-poster inom en månad med en unix-tidsstämpel

  2. Mysql-åtkomsthuvudtabell inuti högeransluten underfråga

  3. Begränsa med villkorad värdekontroll i MySQL

  4. Microsoft Access vs SQL Server