Bonsoir,
Je dois réaliser une application qui doit permettre aux clients d'une société de transport d'encoder leur demande de livraison en ligne et le système se chargera du reste (si je puis dire).
Voici les données principales :
- Dans cette application, le Client va pouvoir créer une demande de livraison, la modifier, la supprimer et la valider.
- Il a aussi la possibilité de visualiser ses demandes en attente de validation et de gérer ses adresses.
- Le fait qu'une demande soit validée (date de validation) permet au système d'envoyer la demande à DGC transport. Elle acquiert le statut de demande exportée.
- Il y a lieu de distinguer 2 phases : la validation (confirmation) par l'utilisateur d'une part et l'export vers le SI de DGC d'autre part.
- Un administrateur va pouvoir gérer les aspects administratifs (création d'utilisateur, gestion mot de passes...)
- On souhaitera que l'application donne une estimation du coût de la livraison.
- EXF-02 Demande de livraison Le client authentifié peut introduire une demande de livraison, la modifier et la supprimer.
- EXF03 Validation demande de livraison Le client authentifié peut valider une demande de livraison et l'envoyer à DGC Transport.
- LIV-RS01Demande de Livraison Le client peut enregistrer des demandes de livraisons et à chaque demande y associer un type de service parmi ceux de DGC Transport.
- LIV-RS02 Colis Une demande de livraison se compose d’au moins un coli. Un colis a tou jours un type(boite, palette,…) et une description du contenu (commecial, courrier,...). Un colis peut bénéficier de services spéciaux ( conditionnement, contre remboursement…)
- LIV-RS03 Courses Une demande de livraison implique plusieurs types de courses (ici un enlèvement et une livraison). Chaque course arrive à une adresse et a une personne de contact parmi les contacts du client (voir LIVRS04).
- LIV-RS04 CIF Contact Un contact renseigné pour une course d’une demande de livraison doit appartenir au client qui enregistre la demande de livraison.
- LIV-RS05 Client-Adresse Afin de faciliter l'utilisation, le Client peut conserver des adresses qu’il a utilisé pour des demandes antérieures( demandes validées), et les réutiliser.
Voici le schéma que j'ai pu sortir ( malheureusement avecmon outil , je ne sais pas représenter les CIF : inclusion, etc.. ) :
(voir attachements)
Mes questions sont les suivantes :
- Quels corrections puis-je apporter à mon schéma ?
- Comment gérer correctement les contraintes et les associations (1,n)---relation---(0,n) ?
Voila pour commencer.
J'utilise un DB mysql / InnoDB avec les clef étrangères, et quelques triggers, mais je coince sur ces relations (1,n)(1,1).
Et pour la relation "necessiter course" qu'est ce qui est mieux lors du MLD?
Ceci :
necessiter_course(demande_ID, type_cse_ID, #contact_ID , #adr_ID, remarque)
ce qui reviendrait à avoir une table d'entité et non plus une association.
ou ceci:
necessiter_course(demande_ID, type_cse_ID, contact_ID , adr_ID, remarque)
avec un index UNIQUE sur (demande_ID,type_cse_ID) afin de garantir une demande par type de course.
Ce qui correspond à mon schéma, mais oblige la présence des 4 clef étrangères dans ma clé primaire composite.
Ce qui me chiffonne c'est qu'il avait été question de permettre à l'utilisateur de compléter sa demande de livraison au fur et à mesure... et même de pouvoir pré-encoder (préparer) ses demandes avec certaines infos : (adresse, ou info colis ou contacts, et ce pour l'une des deux courses ou les deux).
Qu'est ce qui est plus correct? plus robuste, plus évolutif... ?
Vos commentaires et conseils seront précieux.
Merci
Partager