J'ai une simple table customers
conçu de cette façon (je signale que certains domaines, ceux concernant cette qeustions):SQL: conception de table pour navire/adresse de facturation et numéro SELECT CONCAT
+ ----------- + --------------- + ---------------- +
+ customer_id + invoice_address + ship_address +
+ ----------- + --------------- + ---------------- +
+ 33 + 234, Walnut Ave + null +
+ ----------- + --------------- + ---------------- +
+ 47 + 66, Smart Ave + null +
+ ----------- + --------------- + ---------------- +
+ 47 + 4, Cool Ave + 45, Dark Street +
+ ----------- + --------------- + ---------------- +
Lignes avec null ship_address signifie que nous devons utiliser l'adresse de facturation du client également pour l'expédition.
1ère question: est ce assez bon design, ou si tous les champs null
ship_address
être rempli avec l'adresse de facturation (même si identique) et non null
gauche.
2ème question: garder une telle conception (même dans le cas où il est une mauvaise conception), comment puis-je créer une requête SELECT (si possible) qui retourne toujours une adresse unique pour chaque ligne: le ship_address
quand ne pas null
, sinon juste le invoice_address
, quelque chose comme:
SELECT CONCAT_IF_SHIP_ADDRESS_NOT_NULL_OTHERWISE_USE_ONLY_SHIP_ADDRESS(invoice_address, ship_address) AS address FROM customers;
requête pour MySQL DB.
Merci,
Eh bien, ce sont les types de réponses qui font vraiment un endroit unique pour apprendre. Cette conception est géniale, le seul effet secondaire est qu'un simple SELECT sur le client (avec l'adresse) exigera toujours un JOIN. Mais pour prodcution et impatience quand la DB pourrait devenir énorme c'est certainement le bon chemin à parcourir. –
En fait, Customer - Address est une relation an n: m parce que la même adresse peut être pour plusieurs clients (ie différents employés dans la même entreprise, j'utilise la même adresse de compagnie que l 'adresse de livraison). la table peut gérer cela aussi. BTW: J'avais déjà divisé la Ville, l'État, .. Fileds, je ne les ai pas écrits dans la question afin de garder les choses simples. –
que se passe-t-il si le client change d'adresse? Les adresses de facturation précédentes du client ne devraient pas changer à des fins historiques ... que devrait-on faire alors? – greaterKing