Page 1 sur 1

MCD web marchand : adresse client

Posté : 17 oct. 2007, 15:46
par Steph35
Bonjour à tous,

Je prepare un site marchand et je me pose une question concernant mon modèle de données. Voici ma problématique :

Un client passe une commande. On a une adresse de facturation qui est celle du client et une adresse de Livraison qui est celle du destinataire de la commande. Je me retrouve donc avec les tables suivantes (entres autres bien sûr) :
- Client
- Commande
- Adresse

Mon souci est de savoir où positionner le nom et prénom (et éventuellement numéro de téléphone) du client.

En effet ma table Adresse va devoir contenir les champs Nom et Prénom car j’en ai besoin pour l’adresse du destinataire. Par contre concernant le Client, ces champs nom et prenom peuvent être liés soit à la definition du Client (tout comme son login, son pmot de passe, son email,…) soit à son adresse. Alors où les mettre ? Dans la table Client ou dans la table Adresse ?

Pour finir, l'adresse du destinataire est liée à la Commande. Par contre l'adresse de Facturation (celle cu client) doit elle être également liée à la commande ou doit elle être lié au Client (avec donc dans ce dernier cas la Commande qui est liée au client pour boucler la boucle des relations entre tables).

J'espere que ma problematique est assez claire car ce n'est pas evident à expliquer par écrit.

Merci par avance.

Posté : 17 oct. 2007, 16:48
par zeus
J'aurais 2 solutions à te proposer

1/ Pas de table adresse et toutes les informations dans la table client. En effet, pourquoi créer une table adresse si tu sais que tu auras 1 adresse de facturation et 1 adresse de livraison, et que tu peux donc prévoir le nombre de champs voulu.

2/ Si tu préfères prévoir aucun destinataire (adresse facturation = adresse livraison) ou plusieurs destinataires potentiels (1 par commande), tu peux créer une table destinataire qui aurait une clé étrangère sur la table client et la table commande aurait une clé étrangère non obligatoire sur la table destinataire

Voilà le MCD de la seconde solution
Image

Du coup, plusieurs cas de figure
  • Adresse de livraison = adresse de livraison : Le champ commande.id_destinataire n'est pas renseigné, il faut chercher l'adresse du client
  • Adresse de livraison != adresse de livraison : Le champ commande.id_destinataire contient le destinataire de la commande
Avec ce système, tu pourras donc éviter de créer des destinataires quand il n'y a pas lieu et tu pourras attribuer plusieurs destinataires pour un unique client ;)

Posté : 17 oct. 2007, 20:45
par Qtzph35
Merci pour cette réponse rapide. Et bien pour ma premiere question sur le forum je ne pouvais pas rever mieux :lol:
Je pensais effectivement à te premiere suggestion en prenant mon bus mais je me disais que c'était dommage d'avoir les infos d'une adresse dans une table Client avec egalement ces infos dans une table Adresse juste à côté.
Ta seconde proposition me ravit donc surtout que je souhaite par ailleurs pouvoir obtenir toutes les adresses des destinataires pour lesquels mon client a passé commande.

Merci beaucoup et bonne soirée

Posté : 17 oct. 2007, 22:32
par zeus
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)