Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Datenbankdesign für mehrere Kundenadressen und Standardadressen

Meiner Meinung nach machst du das viel zu kompliziert. Es besteht keine Notwendigkeit, Ihr Adressschema so übernormalisiert zu machen. Die meisten Systeme, die ich gesehen habe und die mehrere Kundenadressen verarbeiten, haben eine Kundentabelle wie Ihre und dann eine Adresstabelle wie folgt:

 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 ist ein Fremdschlüssel zum customer Tisch. Der Primärschlüssel ist eine Zusammensetzung aus (customer_id , address_ordinal ). Der primary Spalte ist true wenn die Adresse die primäre ist.

In Bezug auf Ihre Frage zu Lieferanten möchten Sie möglicherweise eine gemeinsame Tabelle mit dem Namen "Kontakte" erstellen und sowohl Ihren Kunden als auch Ihren Lieferanten contact_ids geben.

Wenn Ihr System eine Referenztabelle enthält (vielleicht etwas, das Sie von einem Datenlieferanten kaufen), die Zeilen (Postleitzahl, Ort, Provinz) enthält, können Sie diese verwenden, um Ihre Adresstabelle zu füllen. Aber Sie sollten es vermeiden, Ihre Adressen dazu zu zwingen, nur hartcodierte Postleitzahlen zu enthalten:Diese Referenztabellen veralten sehr schnell.