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

Progettazione di database MySQL per indirizzi multipli del cliente e indirizzo predefinito

Dal mio punto di vista lo stai rendendo troppo complesso. Non è necessario rendere lo schema degli indirizzi così sovranormalizzato. La maggior parte dei sistemi che ho visto che gestiscono più indirizzi di clienti hanno una tabella clienti come la tua e quindi hanno una tabella di indirizzi, come segue:

 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 è una chiave esterna per il customer tavolo. La chiave primaria è composta da (customer_id , address_ordinal ). Il primary la colonna è true se l'indirizzo è quello principale.

Per quanto riguarda la tua domanda sui fornitori, potresti voler creare una tabella comune chiamata "contatti" e fornire contact_id ai tuoi clienti e fornitori.

Se il tuo sistema contiene una tabella di riferimento (forse qualcosa che acquisti da un fornitore di dati) contenente righe (codice postale, località, provincia), puoi utilizzarla per compilare la tabella degli indirizzi. Ma dovresti evitare di forzare i tuoi indirizzi a contenere solo codici postali codificati:quelle tabelle di riferimento diventano obsolete molto velocemente.