IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Correction MCD orienté production


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut Correction MCD orienté production
    Bonjour à tous,

    Je suis novice sur les MCD, j’essaie de comprendre la méthode Merise qui me donne du fil retordre !!
    J’ai donc créé ce premier MCD ci-joint à l’aide de Power AMC Version 15.1
    Le but étant de créer un MPD et de générer le script dans My SQL server.
    Je vous remercie pour toute l’aide que vous pourrez m’apporter sur le sujet.
    Au plaisir d’échanger avec vous sur les corrections à apporter

    Contexte :
    Une entreprise de prestation de services propose des services tels que les contrôles règlementaires, mission d’audit, formation…
    Le but de ce MCD est de créer un schéma accès production et notamment sur les contrôles règlementaires
    Je n’ai pas indiqué tous les attributs mais il me semble que les plus important y sont.

    Règles de gestion:

    La base client : La création du client est obligatoire même s’il s’agit d’un prospect
    R001- Un client demande un ou plusieurs contrôles règlementaires (ex : vérification électrique d’un bâtiment).

    La proposition commerciale
    R002 : Une Propo Com. est émise pour un seul client
    R003 : Une Propo Com. concerne un seul lieu payeur (adresse de facturation) un seul DO (celui qui a passé cde), un ou plusieurs sites d’intervention > Ici je ne sais pas trop comment
    gérer ces informations
    R004 : Une Propo com peut concerner un ou plusieurs types de mission
    R005 : Une mission peut porter sur un ou plusieurs matériels (contrôle règlementaire)
    R006 : Un matériel concerne un ou plusieurs types de mission (ascenseur, bâtiments...)
    R007 : Une Propo Com. doit avoir le statut « signé » pour être mise en production
    Le statut va donc générer en automatique la création du contrat, prestation, intervention

    Le contrat est créé suite à la signature de la Propo Com. et reprend des informations indiquées dans la propo.com.
    R008 : le contrat contient une ou plusieurs prestations
    R009 : Le contrat contient une ou plusieurs interventions
    Il s’agit d’une hiérarchie crée suivant une arborescence : accord/contrat (N+2) > prestation(N+1) > intervention(N)

    La prestation
    R010 : Une prestation est rattachée à un seul contrat
    R011 : Une prestation est créé par année.
    R012 : Une prestation contient une ou plusieurs interventions

    L’intervention
    R013 : elle doit être rattachée à une seule prestation et un seul contrat
    R014 : Une intervention est programmée suivant différentes échéances (Mensuelle, trimestrielle, annuelle…)
    R015 : Pour chaque intervention il faut affecter un et un seul technicien
    R016 : Une intervention peut faire l’objet d’aucun ou de plusieurs RDV

    Prise de RDV R017 : un RDV concerne une intervention ou plusieurs interventions
    Employé R018 : un technicien est affecté une ou plusieurs interventions
    Etat d’activité R019 : un technicien est affecté suivant son planning
    Je ne sais pas comment gérer cette entité.

    Rapport :
    R020 : Un client peut recevoir un ou plusieurs rapports
    R021 : Un rapport fait l’objet d’une seule facturation
    Facturation : Un client peut recevoir une ou plusieurs factures

    [ATTACH]647600
    Fichiers attachés Fichiers attachés
    • Type de fichier : odt MCD.odt (471,1 Ko, 25 affichages)

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Bonjour,

    Les règles de gestion sont rédigées, identifiées et classées par sujet, bravo

    Concernant les propositions commerciales et les contrats,
    Si je comprends bien, plusieurs propositions commerciales sont faites à un client et certaines d'entre-elles deviennent des contrats.
    Ce faisant, j'ai l'impression que ces deux types d'entité ne pourraient faire qu'un, en ajoutant un statut qui permettrait de savoir si la proposition est émise (donc pas encore signée par le client), acceptée et signée (c'est donc devenu un contrat), fermée (traitée, facturée et payée), etc.


    Concernant les missions et prestations
    Ces deux notions ne sont pas claires, merci de donner des exemples de missions et des exemples de prestations.


    Au sujet des interventions et des factures
    Votre modèle implique que la facture est produite dès que l'intervention est faite (cardinalité minimale de zéro coté intervention vers facture). Ceci implique que toutes les interventions d'une même facture sont faites simultanément, c''est assez contraignant ! Admettons, mais à confirmer ou infirmer sous forme de règles de gestion pour que ce soit bien clair.
    Par ailleurs, "ligne_facture" est inapproprié pour nommer l'association entre [prestation] et [facture]. D'une par parce qu'il est recommandé d'utiliser un verbe à l'infinitif pour nommer les associations, mais surtout parce qu'une ligne de facture est elle même un type d'entité (donc un rectangle dans le MCD) en association n-aire avec sa facture.
    On doit donc avoir : [FACTURE] 1, n --- (contenir) --- 1,1(R) [LIGNE_FACTURE]
    Avec le (R) coté ligne_facture matérialisant l'identification de la ligne relativement à sa facture.
    Il semble que vous utilisiez power-AMC, auquel cas, de mémoire, le (R) sera formalisé par des parenthèses autour des cardinalités : (1,1).
    Bien sûr, il faudra compléter les attributs de l'entité-type facture, qui doit comporter à minima un total HT, un total TTC, un montant TVA...
    Vérifiez aussi que le client facturé est toujours le client qui a passé commande, il n'est pas rare dans les grosse sociétés que le client facturé soit différent du client du contrat, ce que votre MCD interdit en l'état.


    Relativement aux interventions et aux employés
    Ne devez-vous pas tenir compte de certaines compétences requises avant d'affecter tel employé à telle intervention ?
    Si c'est bien le cas, il faut rédiger les règles de gestion en ce sens et modéliser à minima un type d'entité [COMPETENCE] qui sera associée d'une part à certaines interventions et d'autre part à certains employés


    D'autres questions viendront plus tard, à bientôt

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut
    Bonjour Escartefigue

    Tout d'abord merci pour ton retour !

    Je reprends les points suivants :

    "Concernant les propositions commerciales et les contrats,
    Si je comprends bien, plusieurs propositions commerciales sont faites à un client et certaines d'entre-elles deviennent des contrats.
    Ce faisant, j'ai l'impression que ces deux types d'entité ne pourraient faire qu'un, en ajoutant un statut qui permettrait de savoir si la proposition est émise (donc pas encore signée par le client), acceptée et signée (c'est donc devenu un contrat), fermée (traitée, facturée et payée), etc."
    Tu as raison la proposition à un cycle de vie 'Emise' 'En cours ", "non signé"... donc à voir pour l'intégrer dans la propo.
    Les propo commerciales peuvent en effet rester lettre morte.

    Concernant les missions et prestations
    Ces deux notions ne sont pas claires, merci de donner des exemples de missions et des exemples de prestations.
    En effet je me rend compte que ce n'est pas bon ce que j'ai fait à ce sujet.
    La prestation permet de spécifier la nature de la mission, sa programmation (année et mois)
    Elle sera réalisée au travers des interventions (indiquant:année + mois) qui à leur tour auront des code indiquant à quel stade elles se trouvent (non affecté à un technicien , affecté, en cours de realisation, réalisée, à facturer...)

    Exemple d'une prestation : une mission de vérification électrique annuelle doit avoir lieu à partir de septembre 2023 pour l'acheteur X, sur le site Y et facturable au client Z
    Cette prestation porte sur un contrat signé pour trois ans .
    La prestation indiquera une programmation Année+mois (2023-09 / 2024-09/ 2025-09), l'acheteur, l'adresse facturation, site intervention, un temps prévisionnel
    Chaque prestation fera l'objet de une ou plusieurs interventions : une vérification électrique pouvant concerné plusieurs sites on créera une intervention pour chaque site si 'ladresse est différente à chaque fois.


    Relativement aux interventions et aux employés
    Ne devez-vous pas tenir compte de certaines compétences requises avant d'affecter tel employé à telle intervention ?
    Si c'est bien le cas, il faut rédiger les règles de gestion en ce sens et modéliser à minima un type d'entité [COMPETENCE] qui sera associée d'une part à certaines interventions et d'autre part à certains employés
    Pour chaque intervention il faudra affecter un intervenant dont les qualifications sont en rapport avec la mission et planifier une date d'intervention
    Je crois que pour chaque type de mission il doit y avoir un code mission auquel j'identifie un code Qualif

    Au sujet des interventions et des factures
    Votre modèle implique que la facture est produite dès que l'intervention est faite (cardinalité minimale de zéro coté intervention vers facture). Ceci implique que toutes les interventions d'une même facture sont faites simultanément, c''est assez contraignant ! Admettons, mais à confirmer ou infirmer sous forme de règles de gestion pour que ce soit bien clair.
    Par ailleurs, "ligne_facture" est inapproprié pour nommer l'association entre [prestation] et [facture]. D'une par parce qu'il est recommandé d'utiliser un verbe à l'infinitif pour nommer les associations, mais surtout parce qu'une ligne de facture est elle même un type d'entité (donc un rectangle dans le MCD) en association n-aire avec sa facture.
    On doit donc avoir : [FACTURE] 1, n --- (contenir) --- 1,1(R) [LIGNE_FACTURE]
    Avec le (R) coté ligne_facture matérialisant l'identification de la ligne relativement à sa facture.
    Il semble que vous utilisiez power-AMC, auquel cas, de mémoire, le (R) sera formalisé par des parenthèses autour des cardinalités : (1,1).
    Bien sûr, il faudra compléter les attributs de l'entité-type facture, qui doit comporter à minima un total HT, un total TTC, un montant TVA...
    Je reviendrai sur le point ci dessus car je dois vérifier quelques points car je ne suis pas sur du process


    Vérifiez aussi que le client facturé est toujours le client qui a passé commande, il n'est pas rare dans les grosse sociétés que le client facturé soit différent du client du contrat, ce que votre MCD interdit en l'état.
    Sur ce dernier point en effet sur une facture il y a trois rôles : Acheteur, lieu payeur et facturation
    C'est un point particulièrement délicat que je n'arrive pas à mettre en oeuvre.


    Au plaisir d'échanger !

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par MDA_1602 Voir le message
    Sur ce dernier point en effet sur une facture il y a trois rôles : Acheteur, lieu payeur et facturation
    C'est un point particulièrement délicat que je n'arrive pas à mettre en oeuvre.
    Une possibilité : modéliser un type d'entité [ADRESSE]en lien avec le client et un type d'entité [TYPE_ADRESSE] en lien avec l'adresse

    Ce qui donne [CLIENT] 1,n --- (posseder) --- 1,1(R) [ADRESSE] 1,1 --- (typer) 0,n [TYPE_ADRESSE]

    Et on aura ainsi des adresses de type livraison, facturation, siège social... selon le besoin, ces adresses seront récupérées par le traitement lors de l'émission de la facture.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut
    Bonjour Escartefigue


    Voici comment j'ai modélisé la partie données clients, j'espère que c'est assez compréhensible

    Entité "Rôle adresse" : Gère les rôles payeur, site intervention, donneur d'ordre
    R001-1 Un client peut POSSEDER un ou plusieurs rôles adresse
    R001-2 Un rôle adresse est POSSEDE par un ou plusieurs clients

    Entité "Clients" J'ai créé une hiérarchie : héritage par partition totalité et exclusion
    R001-3 Un client est soit une Société, soit un particulier, soit une adresse chantier

    Entité "SOCIETE" J'ai créé une hiérarchie: héritage par partition totalité et exclusion
    Entité "ADRESSE PRINCIPAL" : pour identifier le siège social
    Entité "ADRESSE SECONDAIRE" :pour identifier les Etablissements secondaires
    R001-4 Une société à un seul siège social
    R001-5 Une société à plusieurs Ets secondaires
    R001-6 Une siège social est RATTACHE à un ou plusieurs Ets secondaires
    R001-7 Un Ets secondaire est RATTACHE à seul siège social


    Entité "Contacts" :
    R001-8 Un clients peut APPARTENIR à zéro ou plusieurs contacts
    R001-9 Un contact peut APPARTENIR à un ou plusieurs client,

    Qu'en penses tu ?
    merci pour ton retour

    Nom : McdClients.png
Affichages : 235
Taille : 327,8 Ko

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Bonsoir MDA_1602

    L'adresse ne peut pas être une sous type du client, ça n'a pas de sens, la société non plus du reste

    Voyez dans ce fil de discussion, réponse n°4, comment modéliser les adresses et les codes postaux


    Ici, l'adresse sera en lien avec le client et non pas avec l'étape, et, comme je l'indiquais plus haut, il faudra ajouter à cette partie adresse un type d'entité [TYPE_adresse] en lien avec l'adresse

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut
    Bonsoir Escartefigue

    Je ne comprends pas ta réponse.

    Pourrais tu utiliser le nom des Entités qui ne vont pas et m'expliquer pourquoi cela ne fonctionne pas tel que je l'ai modélisé
    Comme je l'ai indiqué je débute en MCD et ce n'est pas simple à comprendre.
    En te remerciant

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Les héritages sont utilisés à mauvais escient.
    Par exemple, pour l'héritage 1 : que le client puisse être une particulier ou une société, d'accord, mais qu'il puisse être une adresse de chantier, non, une adresse ce n'est pas un client. De la même façon, pour l'héritage 2, une adresse qu'elle soit principale ou secondaire, n'est pas une société.

    Par ailleurs, le role de l'adresse ne doit pas être associé au client, mais à l'adresse.

    Voici un exemple de MCD possible avec des exemples de contenus :

    Nom : MCD_orienté_production_V01.jpg
Affichages : 217
Taille : 282,6 Ko

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut
    Waou merci Escatefigue pour la modélisation !

    Petites questions
    1- Pourquoi doit on créer des entités uniques : Adresse -Ville- Code Postal et ne pas les intégrer dans l'entité adresse ? Est-ce dû aux cardinalités en N-N ?
    Est-ce que pour le pays il faudrait également créer une Entité Pays associée à l'entité Ville ? [Ville] 1,1 --- (Situer) --- 1,N_ [PAYS]

    2-Dans ton cas de figure une adresse chantier serait rattachée à une adresse elle-même rattachée à un client qui ne peut être qu'une société ou un particulier c'est bien ça ?
    Est-ce que le MCD que tu proposes est en accord avec l'application finale qui prévoit que en tant que utilisateur final lorsque que je dois créer un client on me propose les choix suivants : société privée, société publique, adresse chantier, particuliers ?

    3- Concernant l'adresse Principale -Secondaire : je ne comprends pas la cardinalité 0-1 secondaire, est ce que cela signifie qu'une adresse secondaire peut avoir 0 adresse principale ?

    4- Le modèle que tu proposes est-il un modèle classique servant à créer une base clients ?

    En te remerciant

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par MDA_1602 Voir le message
    1- Pourquoi doit on créer des entités uniques : Adresse -Ville- Code Postal et ne pas les intégrer dans l'entité adresse ? Est-ce dû aux cardinalités en N-N ?
    Si un client peut avoir une à plusieurs adresses, il faut créer un type d'entité adresse. Si un client possède toujours une et une seule adresse, alors ce n'est pas nécessaire.
    J'ai supposé les règles de gestion suivantes
    R001a : un client est situé à un ou plusieurs adresses
    R001b : une adresse situe un et un seul client
    R002a : une adresse correspond à un ou plusieurs types (adresse de livraison, de facturation, la même adresse pouvant servir aux deux...)
    R002b : une type d'adresse correspond à zéro à plusieurs adresses


    Citation Envoyé par MDA_1602 Voir le message
    Est-ce que pour le pays il faudrait également créer une Entité Pays associée à l'entité Ville ? [Ville] 1,1 --- (Situer) --- 1,N_ [PAYS]
    Tout à fait


    Citation Envoyé par MDA_1602 Voir le message
    2-Dans ton cas de figure une adresse chantier serait rattachée à une adresse elle-même rattachée à un client qui ne peut être qu'une société ou un particulier c'est bien ça ?
    Il faut expliquer ce qu'est "une adresse chantier" pour pouvoir répondre à cette question, avec des exemples concrets d'articulations entre "client", "adresse chantier" et "adresse"


    Citation Envoyé par MDA_1602 Voir le message
    Est-ce que le MCD que tu proposes est en accord avec l'application finale qui prévoit que en tant que utilisateur final lorsque que je dois créer un client on me propose les choix suivants : société privée, société publique, adresse chantier, particuliers ?
    Un MCD c'est un Modèle Conceptuel des Données, c'est à dire une représentation selon un formalisme particulier des règles de gestion.
    Le MCD n'a pas à être compatible ou pas avec les applications, sa vocation c'est être le reflet exact des règles de gestion.
    Une application c'est l'orchestration de traitements, rien à voir avec les données.
    Quand on décline le MCD en MPD, ça crée des objets SQL (tables, index...) qui seront utilisés par les traitements et donc l'application, mais l'un et l'autre sont deux choses bien distinctes.


    Citation Envoyé par MDA_1602 Voir le message
    3- Concernant l'adresse Principale -Secondaire : je ne comprends pas la cardinalité 0-1 secondaire, est ce que cela signifie qu'une adresse secondaire peut avoir 0 adresse principale ?
    Ca signifie coté 0,n que l'adresse principale peut avoir zéro ou plusieurs adresses secondaires.
    Dans l'autre sens, c'est une coquille, il faut remplacer 0,1 par 1,1 : une adresse secondaire correspond à une et une seule adresse principale.


    Citation Envoyé par MDA_1602 Voir le message
    4- Le modèle que tu proposes est-il un modèle classique servant à créer une base clients ?
    Tout dépend des règles de gestion, mais on y retrouve souvent plus ou moins cette configuration.

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut
    Si un client peut avoir une à plusieurs adresses, il faut créer un type d'entité adresse. Si un client possède toujours une et une seule adresse, alors ce n'est pas nécessaire.
    J'ai supposé les règles de gestion suivantes
    R001a : un client est situé à un ou plusieurs adresses
    R001b : une adresse situe un et un seul client
    R002a : une adresse correspond à un ou plusieurs types (adresse de livraison, de facturation, la même adresse pouvant servir aux deux...)
    R002b : une type d'adresse correspond à zéro à plusieurs adresses
    On ne gère pas plusieurs adresses pour un ID client unique, un même client sera créé autant de fois que l'adresse est différente donc sera créé sous diffférents identifiant
    Un client c'est minimum un Nom + une et une seule adresse, après suivant les attribut des Entités tu définis quel type de client particulier, société privée ou publique, adresse chantier

    Exemple avec la société Tartanpion je l'ai crée autant de fois que j'ai d'adresse différentes
    Tartanpion 1 rue St Blaise 75000 paris > compte client 100
    Tartanpion 3 rue Victor Hugo 75000 Paris > compte client 101
    Tartantion place de la mairie 75000 paris > compte client 102

    Tartanpion Compte client 100 > ce client est le donneur d'ordre et le payeur
    il demande un contrôle règlementaire sur une site qui n'appartient pas à la société Tartanpion dans ce cas on crée l'adresse chantier sous le nom "site Tartanpion Bellevue" 8 rue Bellevue 92000 sous le numéro de compte client 120

    Lors de la création de l'intervention (cela correspond à la commande du client) on indiquera qui a passé la commande (N° compte client DO 100) , qui va régler la commande (le compte du payeur 100), et où a lieu le contrôle (Site Tartanpion Bellevue > compte 120)

    J'espère que c'est un peu plus clair pour toi

    En te remerciant

  12. #12
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    D'accord c'est beaucoup plus clair.

    En ce cas, le seul client est le compte n°100, ce client 100 passe commande de différents chantiers, chantiers situés à des adresses différentes, les adresses de ces chantiers sont soit des attributs de chaque commande (s'il y a une et une seule adresse de chantier par commande), soit un type d'entité en lien avec la commande (dans le cas où il peut y en avoir plusieurs). On conserve bien entendu la notion d'adresse client (en plus de l'adresse chantier), pour gérer l'adresse du siège, de facturation, de comptabilité ou tout autre en fonction du besoin.

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut
    En effet la réflexion est la suivante
    Je suis un commercial à qui on a adressé une demande d'intervention pour effectuer un contrôle électrique
    Je crée un offre (cde) au client pour cela j'ai besoin d'identifier sur l'offre : le client qui a demandé l'intervention, le client qui va payer, et le client ou doit avoir lieu le contrôle qui pourrait être une adresse chantier, une adresse d'une société privée ou une adresse d'un particulier.
    Donc la finalité c'est de créer un client à une adresse et suivant les informations attribuées au client tu vas pouvoir dire si tu peux l'utiliser en payeur, en adresse chantier ou en donneur d'ordre

    C’est pour cela que j’avais créé les trois Entités clients qui ont en commun uniquement l’adresse, chaque Entité ayant des attributs propres qui serviront à définir le rôle du client
    Il y a des règles d'autorisation sur le Rôle adresse qui dépendra des attributs de l’entité client qui hérite elle même des trois types de clients (Particulier societe adresse chantier)
    C'est pour cela que j'avais détaillé les attibuts de chaque Entité

    Exemples :
    1- Une société qui n’a pas d’immatriculation (Entité Société -attribut Siren= ‘vide’) ne sera pas autoriser à avoir rôle de payeur ni de donneur d’ordre
    2- Une société immatriculée (Attribut Siren renseigné) pourra être facturable (= rôle lieu payeur)
    3- Un client créé en Adresse chantier (Forcément sans immatriculation car il n’a pas l’attribut ‘Siren’ dans son Entité) ne sera jamais facturable.
    4- Un particuliers pourra avoir n'importe quel rôle du fait de sa typologie "Particuliers"
    Je ne sais pas si toutes ces informations doivent être prise en compte a l'étape du MCD ou bien uniquement lors de la création des tables

    De plus je me pose la question est ce que l'entité type adresse est bien associée ?

    En te remerciant

  14. #14
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Donc je confirme que l'adresse du chantier est sans rapport avec la notion de client : un client, c'est quelqu'un qui passe une commande

    Pour ce qui concerne la notion de client payeur ou pas, on peut établir une relation reflexive du client sur lui même

    Je n'en ai pas le temps de suite, mais je communiquerai un MCD corrigé pour tenir compte de ces explications dès que possible

    Il faudra d'abord indiquer si l'adresse du chantier est :
    - dépendante du contrat client (une seule adresse pour un même contrat)
    - dépendante de la prestation du contrat (une adresse par prestation) ==> je suppose que c'est ça
    - dépendante de l'intervention de la prestation (une adresse par intervention)

    À préciser

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut
    Il faudra d'abord indiquer si l'adresse du chantier est :
    - dépendante du contrat client (une seule adresse pour un même contrat)
    - dépendante de la prestation du contrat (une adresse par prestation) ==> je suppose que c'est ça
    - dépendante de l'intervention de la prestation (une adresse par intervention)
    Sur le contrat tu as tous les contrôles demandés par le client qui doivent être répertoriés :
    Donc dans un contrat (ici il d'agit de la proposition commerciale) tu peux avoir 1 ou plusieurs demande de contrôle que l'on appel intervention
    Il existe différentes type d'intervention :Contrôle électrique , contrôle gaz, contrôle d'un ascenseur...) qui peuvent concerner un ou plusieurs adresses différentes
    Bien entendu dans le contrat les montant HT , Tva seront spécifiés ainsi que l'adresse payeur, donneur d'ordre et adresse de l'intervention

    La prestation correspond à la période du contrat: signé pour 3 ans donc création de 3 prestations une pour chaque année
    Chaque année tu peux avoir un ou plusieurs contrôles de prévus , donc tu crées les interventions qui sont liés à la prestation

    Pour planifier toutes les interventions prévues au contrat on va se baser sur des dates prévues au contrat (on sera sur du mensuel pas au jour car impossible de s'assurer une date de RDV à ce moment là)
    Exemple : un contrat est signé pour une période de 3 ans qui prévoit que chaque année qu'en Janvier un contrôle électrique doit être réalisé chez tel client à telle adresse.
    Donc au final sur l'intervention tu dois pouvoir identifier la date d'intervention prévu au contrat (courant janvier) , le type du contrôle , le technicien affecté, le matériel requis pour le contrôle...

    J'espère que c'est plus clair, mais je n'ai pas tout indiqué il manque encore des précisions sur d'autres entités je pense
    Merci

  16. #16
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par MDA_1602 Voir le message
    Il existe différentes type d'intervention : contrôle électrique , contrôle gaz, contrôle d'un ascenseur...) qui peuvent concerner une ou plusieurs adresses différentes
    Bien entendu dans le contrat les montant HT , Tva seront spécifiés ainsi que l'adresse payeur, donneur d'ordre et adresse de l'intervention
    Est on bien d'accord que :
    • les adresses des différentes prestations d'un même contrat peuvent être différentes (ex : contrôle gaz à une adresse différente du contrôle électrique)
    • l'adresse de toutes les interventions d'une même prestation d'un même contrat est invariante (le contrôle gaz du contrat C1 se fera toujours au même endroit)
    • le client payeur sera toujours le même pour tous les contrats d'un même client donneur d'ordre ?

  17. #17
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Si mes quelques hypothèses sont correctes et que j'ai bien compris les explications complémentaires, voici le MCD correspondant :

    Nom : Sans titre.png
Affichages : 199
Taille : 393,3 Ko

    J'ai ajouté l'asso réflexive du client sur lui-même pour identifier le client payeur d'un client donneur d'ordre
    Le client payeur sera obligatoirement lié à une adresse de type adresse de facturation
    Le client donneur d'ordre sera facultativement lié à une ou plusieurs adresses de type adresse de livraison, adresse de livraison qui pourra être précisée au niveau de la prestation (la fameuse "adresse chantier")

    Le contrat inclut une ou plusieurs prestations qui planifient une ou plusieurs interventions.
    Chaque intervention requiert une compétence (en électricité, en plomberie...). Eventuellement, il faudra prévoir des niveaux de compétences selon le besoin.
    Si souhaité, on pourra aussi gérer la compétence des employés pour vérifier qu'on affecte une personne compétente pour l'intervention.

    Je pense que la relation réflexive de l'adresse sur elle même n'est plus nécessaire, pour moi les relations client adresse d'une part et prestation adresse d'autre part suffisent.
    A confirmer

    Voici le script DDL généré, ici j'ai opté pour SQL server, il sera très facile de modifier le SGBD si besoin dans Looping

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    CREATE TABLE CLI_client(
       CLI_ident INT IDENTITY,
       CLI_dtcre DATE NOT NULL,
       CLI_ident_payeur INT NOT NULL,
       PRIMARY KEY(CLI_ident),
       FOREIGN KEY(CLI_ident_payeur) REFERENCES CLI_client(CLI_ident)
    );
     
    CREATE TABLE CLP_client_part(
       CLI_ident INT,
       CLP_nom VARCHAR(50) NOT NULL,
       CLP_prenom VARCHAR(50) NOT NULL,
       CLP_ddn DATE NOT NULL,
       CLP_nni CHAR(13) NOT NULL,
       PRIMARY KEY(CLI_ident),
       UNIQUE(CLP_nni),
       FOREIGN KEY(CLI_ident) REFERENCES CLI_client(CLI_ident)
    );
     
    CREATE TABLE CLS_client_ste(
       CLI_ident INT,
       CLS_raison_soc VARCHAR(128) NOT NULL,
       CLS_siren CHAR(9) NOT NULL,
       PRIMARY KEY(CLI_ident),
       FOREIGN KEY(CLI_ident) REFERENCES CLI_client(CLI_ident)
    );
     
    CREATE TABLE YAD_type_adr(
       YAD_ident INT IDENTITY,
       YAD_code CHAR(3) NOT NULL,
       YAD_libelle VARCHAR(50) NOT NULL,
       PRIMARY KEY(YAD_ident),
       UNIQUE(YAD_code)
    );
     
    CREATE TABLE VIL_ville(
       VIL_ident INT IDENTITY,
       VIL_insee CHAR(5) NOT NULL,
       VIL_nom VARCHAR(50) NOT NULL,
       PRIMARY KEY(VIL_ident)
    );
     
    CREATE TABLE CPO_code_post(
       CPO_ident INT IDENTITY,
       CPO_code CHAR(5) NOT NULL,
       PRIMARY KEY(CPO_ident),
       UNIQUE(CPO_code)
    );
     
    CREATE TABLE CON_contact(
       CON_ident INT IDENTITY,
       CON_nom VARCHAR(50) NOT NULL,
       CON_prenom VARCHAR(50) NOT NULL,
       PRIMARY KEY(CON_ident)
    );
     
    CREATE TABLE YME_type_media(
       YME_ident INT IDENTITY,
       YME_code CHAR(4) NOT NULL,
       YME_libelle VARCHAR(128) NOT NULL,
       PRIMARY KEY(YME_ident),
       UNIQUE(YME_code)
    );
     
    CREATE TABLE CTR_contrat(
       CTR_ident INT IDENTITY,
       CTR_date DATE,
       CLI_ident INT NOT NULL,
       PRIMARY KEY(CTR_ident),
       FOREIGN KEY(CLI_ident) REFERENCES CLI_client(CLI_ident)
    );
     
    CREATE TABLE CPT_competence(
       CPT_ident INT IDENTITY,
       CPT_code CHAR(4) NOT NULL,
       CPT_libelle VARCHAR(50) NOT NULL,
       PRIMARY KEY(CPT_ident),
       UNIQUE(CPT_code)
    );
     
    CREATE TABLE ADR_adresse(
       ADR_ident INT IDENTITY,
       ADR_ligne1 VARCHAR(35) NOT NULL,
       ADR_ligne2 VARCHAR(35),
       ADR_ligne3 VARCHAR(35),
       ADR_ligne4 VARCHAR(35),
       ADR_ligne5 VARCHAR(35),
       ADR_ident_principal INT NOT NULL,
       CPO_ident INT NOT NULL,
       VIL_ident INT NOT NULL,
       PRIMARY KEY(ADR_ident),
       FOREIGN KEY(ADR_ident_principal) REFERENCES ADR_adresse(ADR_ident),
       FOREIGN KEY(CPO_ident) REFERENCES CPO_code_post(CPO_ident),
       FOREIGN KEY(VIL_ident) REFERENCES VIL_ville(VIL_ident)
    );
     
    CREATE TABLE MED_media(
       CON_ident INT,
       MED_ident INT IDENTITY,
       MED_numero VARCHAR(255) NOT NULL,
       YME_ident INT NOT NULL,
       PRIMARY KEY(CON_ident, MED_ident),
       FOREIGN KEY(CON_ident) REFERENCES CON_contact(CON_ident),
       FOREIGN KEY(YME_ident) REFERENCES YME_type_media(YME_ident)
    );
     
    CREATE TABLE PRS_prestation(
       CTR_ident INT,
       PRS_seq SMALLINT,
       ADR_ident INT NOT NULL,
       PRIMARY KEY(CTR_ident, PRS_seq),
       FOREIGN KEY(CTR_ident) REFERENCES CTR_contrat(CTR_ident),
       FOREIGN KEY(ADR_ident) REFERENCES ADR_adresse(ADR_ident)
    );
     
    CREATE TABLE INT_intervention(
       CTR_ident INT,
       PRS_seq SMALLINT,
       INT_seq SMALLINT,
       INT_dtprevue DATE NOT NULL,
       INT_dtreelle DATE NOT NULL,
       INT_duree TINYINT NOT NULL,
       CPT_ident INT NOT NULL,
       PRIMARY KEY(CTR_ident, PRS_seq, INT_seq),
       FOREIGN KEY(CTR_ident, PRS_seq) REFERENCES PRS_prestation(CTR_ident, PRS_seq),
       FOREIGN KEY(CPT_ident) REFERENCES CPT_competence(CPT_ident)
    );
     
    CREATE TABLE SIC_situer_cli(
       CLI_ident INT,
       ADR_ident INT,
       PRIMARY KEY(CLI_ident, ADR_ident),
       FOREIGN KEY(CLI_ident) REFERENCES CLI_client(CLI_ident),
       FOREIGN KEY(ADR_ident) REFERENCES ADR_adresse(ADR_ident)
    );
     
    CREATE TABLE TAD_typer_adr(
       ADR_ident INT,
       YAD_ident INT,
       PRIMARY KEY(ADR_ident, YAD_ident),
       FOREIGN KEY(ADR_ident) REFERENCES ADR_adresse(ADR_ident),
       FOREIGN KEY(YAD_ident) REFERENCES YAD_type_adr(YAD_ident)
    );
     
    CREATE TABLE VIC_vil_cpo(
       VIL_ident INT,
       CPO_ident INT,
       PRIMARY KEY(VIL_ident, CPO_ident),
       FOREIGN KEY(VIL_ident) REFERENCES VIL_ville(VIL_ident),
       FOREIGN KEY(CPO_ident) REFERENCES CPO_code_post(CPO_ident)
    );
     
    CREATE TABLE CCO_cli_con(
       CLI_ident INT,
       CON_ident INT,
       PRIMARY KEY(CLI_ident, CON_ident),
       FOREIGN KEY(CLI_ident) REFERENCES CLI_client(CLI_ident),
       FOREIGN KEY(CON_ident) REFERENCES CON_contact(CON_ident)
    );
     
    alter table ADR_adresse
    foreign key (VIL_ident, CPO_ident)
    references VIC_vil_cpo (VIL_ident, CPO_ident)

  18. #18
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2023
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2023
    Messages : 38
    Points : 11
    Points
    11
    Par défaut
    Bonsoir Escartefigue

    Tout d'abord merci pour le travail réalisé !

    Je vais voir si j'ai tout bien compris
    Je te fais un retour dès que possible
    Je te remettrais quelques règles de gestion pour voir si elle concordent avec le MCD

    Petite question qu'est ce que l'identifiant relatif, quelle est la différence avec une cardinalité en 1-1 ?

  19. #19
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 022
    Points : 38 165
    Points
    38 165
    Billets dans le blog
    8
    Par défaut
    Un identifiant relatif est utilisé quand on a une entité-type dite "faible", c'est à dire une entité-type qui n'a d'existence qu'en présence de l'entité-type dite "forte" qui lui est associée.

    Les cas typiques sont les lignes de facture associées à leur facture : une ligne de facture ne peut pas exister sans sa facture et la ligne 1 d'une facture X n'est pas la ligne 1 d'une facture Y.
    Ça signifie que le numéro de ligne de facture seul n'est pas unique : l'unicité est formée par le couple (n° facture, n° ligne)
    Ce faisant, au niveau SQL, la table issue de l'entité-type "faible" hérite de l'identifiant de la table issue de l'entité-type forte comme composante de sa PK.
    Concrètement, dans mon exemple, la PK (primary key) de la table ligne_facture sera donc ident_facture + ident_ligne : PK composée d'une FK (Foreign Key) et d'un numéro garantissant l'unicité.

    Certains objectent que ce type de numérotation augmente la taille de la PK contrairement à une identification absolue, c'est un fait, mais...

    • Si la PK de la table identifiée relativement est choisie comme "cluster", alors les performances seront accrues, car toutes les lignes d'une même facture seront rangées dans un espace contigu, ce qui ne sera pas le cas avec une identification absolue
    • Si l'identification relative est propagée dans d'autres tables au travers de clefs étrangères, il est très facile de réaliser des jointures avec la table parente (ici la table facture dans mon exemple) sans passer par toute une série de tables intermédiaires, ce qui simplifie certaines jointures et augmente aussi les performances
    • comme il y a le plus souvent très peu d'occurrences filles (les lignes de facture dans cet exemple) pour une occurrence mère (la facture), le compteur associé à la PK peut être défini avec un type court et donc peu encombrant (genre small integer)

  20. #20
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 911
    Points : 30 657
    Points
    30 657
    Billets dans le blog
    16
    Par défaut Identification relative
    Bravo Capitaine !

    Je te cite :

    « Un identifiant relatif est utilisé quand on a une entité-type dite "faible", etc. »

    En peu de mots tu a tout dit tant au plan conceptuel qu'opérationnel (perfs) !

    Chapeau
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. [MCD] Validation - Correction MCD
    Par Mephista dans le forum Schéma
    Réponses: 1
    Dernier message: 15/01/2014, 13h20
  2. [MCD] Help correction mcd
    Par sgdgn dans le forum Schéma
    Réponses: 0
    Dernier message: 01/03/2012, 22h34
  3. [merise] aide correction MCD
    Par gilbertbicot dans le forum Merise
    Réponses: 3
    Dernier message: 20/01/2010, 17h38
  4. Correction MCD, MLD
    Par yoyo61 dans le forum Modélisation
    Réponses: 3
    Dernier message: 15/07/2008, 17h34
  5. [C#] Comment correctement programmer orienté objet ?
    Par ChristopheOce dans le forum C#
    Réponses: 5
    Dernier message: 06/02/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo