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 :

Lequel de mes MCD est correct ?


Sujet :

Schéma

  1. #21
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    En fait le MCD n'est pas fini et comme j'avais des difficultés gototog a bien voulu me suivre dans ma démarche, et on faisait partie par partie pour ne pas m'embrouiller; ce qui explique les parties d'MCD que tu voie ça et là.

    Citation Envoyé par CinePhil Voir le message

    Passons aux détails...

    3) Entité type_sim
    Mets un identifiant anonyme qui sera de type entier auto-incrémenté ; le nom_type_sim devenant un attribut clé alternative qui sera muni d'une contrainte d'unicité.
    Là je ne saisie pas bien? je dirais même comment faire?
    Une question ne peut-on pas mettre le type comme un attribut dans l'entité sim.
    Citation Envoyé par CinePhil Voir le message
    4) Association type_sim -0,n----associer----0,1- sim
    Y a t-il des sim sans type ?

    Oui ils y a des sim sans type au début c'est au moment d'affecter une sim à une balise qu'on lui affecte un type.
    Citation Envoyé par CinePhil Voir le message
    5) Entités stock
    Est-il nécessaire d'avoir plusieurs entités stock alors qu'elles ont une structure identique ?
    Mais peut-être n'y a t-il pas encore tous les attributs dans tes entités ? Ce qui permettrait de les différencier davantage.
    Tu as raison les entités stock ont les même attributs, c'est juste que je voulais avoir une table stock pour chaque type de materiels.

    Citation Envoyé par CinePhil Voir le message
    6) Entité type_balise
    J'espère que les attributs seront au final nommés différemment que parametre1 et parametre2 ! Et si les paramètres ont des valeurs différentes pour chaque balise, il faut déplacer ces attributs dans l'entité Balise.
    - les paramètres d'un seul type de balise peu changer d'une balise à l'autre. un seul
    - Pourquoi paramètre1 et 2 doivent avoir un autre nom (c'est un paramètre de programmation de la balise)
    - il existe des type de balises qui n'ont pas de paramètres.

    Citation Envoyé par CinePhil Voir le message
    7) Morceau Client, Service, Véhicule
    Il ne devrait pas être isolé du reste du MCD. Comme tes ensembles balise, antenne et sim vont sur les véhicules si j'ai bien compris, il y a une association à faire.
    Oui, comme je l'ai expliqué en haut c'est un traitement d'mcd par composition et je ferais les association dès que les composition sont juste.

    Citation Envoyé par CinePhil Voir le message
    8) Association avoir et compte
    Tu vois sur ton schéma que l'ensemble cité ci-dessus fat une boucle. Du coup, un véhicule peut avoir un compte relatif à un client qui n'est pas celui du véhicule !
    Oui hier je n'arrivais pas à trouver le lien à enlever et celui que je laissé.
    donc je pense que je vais lier véhicule avec client est supprimé le lien véhicule de compte, je vais voir pour rendre l'association compte une entité.

    Citation Envoyé par CinePhil Voir le message
    9) Entité Véhicule
    Qu'est-ce que id_provisoire ?
    Oui ça aussi c'est un casse tête, en fait dès que le client achète des balises, si on veut le lot (balise, sim qui va sur cette dernière et antenne aussi) pour équiper ses véhicules; la direction ici effectue un travail en amont cad

    vu qu'on peut avoir à vendre 150 balises exemples:

    la direction commence à affecter su un tableau excel
    pour chaque balise un numéro sim, une antenne et un véhicule qui appartient au client sur lequel la balise va être installez au finale, si le client livre l'immatriculation du véhicule c'est très bien sinon on donne un numéro provisoire au véhicules pour savoir quel lot va sur quel véhicule.
    on récupérera les immatriculation au fur et à mesure.


    Citation Envoyé par CinePhil Voir le message
    10) Association compte
    Cela ressemble plus à une entité qu'à une association !
    Oui au début je l'avais modélisée comme une entité, en faite je l'ai modifié en association vu la complication que j'ai eu entre service, sous service, client et compte.
    je vais revoir
    -Chaque client a un compte
    -un compte peu avoir ou non de service.
    -un service peu ou pas avoir de sous_service.

    Voici un exemple fait pour gototog:
    si nous avons:l Le client IBM
    avec le
    Service Mettre_en_place
    ------Sous-Service Livrer
    ------Sous-Service Assembler
    Service Comptabilité

    1- Le sous-service Livrer va avoir un compte livrer depuis lequel il va en se connectant voir tout les véhicules appartenant au sous-service Livrer

    2- Le sous-service Assembler va avoir un compte Assembler depuis lequel il va en se connectant voir tout les véhicules appartenant au sous-service Assembler

    3-Le service Mettre_en_place va avoir un compte Mettre_en_place depuis lequel il va en se connectant voir tout les véhicules appartenant au service Mettre_en_place ainsi q'au deux sous-services Livrer et Assembler.

    4-Le client IBM va avoir un compte IBM depuis lequel il va en se connectant voir tout les véhicules appartenant à IBM càd les véhicules n'appartenant à aucun service ni sous-service et tout ceux qui appartiennent au service Mettre_en_place et aux sous-services Livrer et Assembler.

    j'espère que c'est bien détaillé( c'est une arborescence)
    et donc je voudrais faire apparaître pour chaque véhicule dans ma base le chemin du compte auquel il appartient càd si j'ai un véhicule X du sous service Assembler j'aurais dans mon tableau nom véhicule: X....chemin du compte: IBM\Mettre_en_place\Assembler.

    Citation Envoyé par CinePhil Voir le message
    11) Entité sous-service
    Ne faudrait-il pas une association avec une entité service ?
    Un grand débat avec gotogot pour cela ça cela ressemble à mon avis à une relation récursive?

    Au début j'avais modélisé: client --0,n-----11-service
    service--0,n----1,1 sous_service

    et puisque chaque client, service et sous_service a un compte ça a un peu compliqué l'affaire revoir l'exemple plus haut sur association compte .

    je vous joint l'MCD refait d'une autre façon (je voudrais en faite savoir pour chaque client , service et sous service le chemin du compte), pour que tu puisse voir comment on est arriver avec gototog au dernier MCD.

    le compte c'est un compte sur le net qui permet de visualiser les véhicules de chaque client , service, sous service comme expliqué dans les discussions avec gototog.

    Merci de me dire là ou ça cloche.

    Je vous remercie aussi de regarde ce lien rubrique Comment exprimer que des caractéristiques ne puissent être pertinentes que pour certaines occurences d'une entité ?

    Je voudrais savoir si c'est possible de modéliser mon materiels sim, balises, antenne de la sorte? car par moment on a des petit matériels comme batterie,pocette de balise etc mais pas grand chose mais ils existent vraiment.
    Si oui je peux faire cette modélisation, merci de me dire comment m'y prendre.

    Je vous remercie d'avance et j'espère avancer avec vous deux, car pas de pratique depuis quatre ans cela pèse bcp.

    Bonne journée. à toi aussi gototog.

  2. #22
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par jogodepau Voir le message
    Citation Envoyé par CinéPhil
    3) Entité type_sim
    Mets un identifiant anonyme qui sera de type entier auto-incrémenté ; le nom_type_sim devenant un attribut clé alternative qui sera muni d'une contrainte d'unicité.
    Là je ne saisie pas bien? je dirais même comment faire?
    Une question ne peut-on pas mettre le type comme un attribut dans l'entité sim.
    Les clés primaires auto-incrémentée sont bien meilleures que les chaînes alphanumériques. Il suffit d'ajouter à ton entité un type_sim_id et d'en faire l'identifiant de l'entité. Quand au nom_type_sim, tu lui mets une contrainte UNIQUE. Soit ton logiciel de modélisation le prévoit, soit il faudra y penser lors de la création de la BDD.

    Tu as raison les entités stock ont les même attributs, c'est juste que je voulais avoir une table stock pour chaque type de materiels.
    Alors je préconiserais de ne faire qu'une table de stock et de typer le stock :
    Type_stock -0,n----Typer----1,1- Stock

    Du coup, il serait sans doute possible de généraliser les trois types de matériels (sim, balise, antenne) en une entité Materiel et de faire un héritage vers les trois types de matériel. Ainsi, il n'y aurait plus qu'une seule association Stocker.
    Calendrier -0,n---------------------------------------|
    Sim -(1,1)----Etre----0,1- Materiel -0,n----Stocker----0,n- Stock
    Antenne -(1,1)----Etre----0,1--|
    Balise -(1,1)----Etre----0,1-----|

    L'entité mère Materiel aurait pour attributs un identifiant et un numéro et les entités filles Sim, Antenne et Balise auraient chacune leurs attributs spécifiques sans identifiant puisque celui-ci sera hérité de l'entité mère lors de la génération de la BDD.

    - Pourquoi paramètre1 et 2 doivent avoir un autre nom (c'est un paramètre de programmation de la balise)
    N'ont-ils pas réellement un autre nom tel que fréquence, bande, portée... ?
    Y a t-il un nombre variable de paramètres selon le type de balise ?

    - les paramètres d'un seul type de balise peu changer d'une balise à l'autre. un seul

    - il existe des type de balises qui n'ont pas de paramètres.
    Je pense qu'il faudrait vraiment associer les balises à leurs paramètres.
    Balise -0,n----Avoir----(1,1)- Parametre

    Avec les attributs suivants dans l'entité Parametre : Nom_parametre, Valeur_parametre.

    Quel est le nombre de types de balises et le nombre de balises ayant 0 paramètres ou des paramètres variables ?

    Oui ça aussi c'est un casse tête, en fait dès que le client achète des balises, si on veut le lot (balise, sim qui va sur cette dernière et antenne aussi) pour équiper ses véhicules; la direction ici effectue un travail en amont cad

    vu qu'on peut avoir à vendre 150 balises exemples:

    la direction commence à affecter su un tableau excel
    pour chaque balise un numéro sim, une antenne et un véhicule qui appartient au client sur lequel la balise va être installez au finale, si le client livre l'immatriculation du véhicule c'est très bien sinon on donne un numéro provisoire au véhicules pour savoir quel lot va sur quel véhicule.
    on récupérera les immatriculation au fur et à mesure.
    Donc il y aura soit l'immatriculation, soit l'id provisoire de renseigné. Autant tout mettre dans la même colonne immatriculation et de prévoir un test sur le format de l'immatriculation dans le programme. Par exemple, si l'immatriculation est assimilable à un entier, c'est que c'est une immatriculation provisoire. Ou toute autre forme de codage de l'id provisoire qui serait testable et bien différent d'un n° d'immatriculation traditionnel.

    j'espère que c'est bien détaillé( c'est une arborescence)
    Alors regarde la modélisation d'une arborescence par représentation intervallaire.

    Un grand débat avec gotogot pour cela ça cela ressemble à mon avis à une relation récursive?

    Au début j'avais modélisé: client --0,n-----11-service
    service--0,n----1,1 sous_service

    et puisque chaque client, service et sous_service a un compte ça a un peu compliqué l'affaire revoir l'exemple plus haut sur association compte .
    Idem, voire l'arborescence intervallaire.

    je vous joint l'MCD refait d'une autre façon
    Déjà, ce qui ne va pas, c'est que ton association Stocker fait qu'à une date donnée on stocke à la fois et obligatoirement une sim, une antenne et une balise dans un seul stock. Si un jour tu ne reçois que des antennes à stocker, tu ne pourras pas enregistrer ce stockage !
    Voire ma proposition plus haut avec l'héritage de données.

    (je voudrais en faite savoir pour chaque client , service et sous service le chemin du compte), pour que tu puisse voir comment on est arriver avec gototog au dernier MCD.

    le compte c'est un compte sur le net qui permet de visualiser les véhicules de chaque client , service, sous service comme expliqué dans les discussions avec gototog.
    Voir l'arborescence intervallaire.

    Je vous remercie aussi de regarde ce lien rubrique Comment exprimer que des caractéristiques ne puissent être pertinentes que pour certaines occurences d'une entité ?
    Euh... là je ne comprends pas à quoi tu fais allusion !

    Je voudrais savoir si c'est possible de modéliser mon materiels sim, balises, antenne de la sorte? car par moment on a des petit matériels comme batterie,pocette de balise etc mais pas grand chose mais ils existent vraiment.
    Si oui je peux faire cette modélisation, merci de me dire comment m'y prendre.
    Donc si je comprends bien, tu as aussi d'autres types de matériel à prendre en compte. Tu vois que l'héritage te sera utile !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #23
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    OK je vais étudier la modélisation d'une arborescence par représentation intervallaire et l'héritage.

    Citation Envoyé par CinePhil Voir le message
    Euh... là je ne comprends pas à quoi tu fais allusion !
    En faite là je parlais du lien

    Comment exprimer que des caractéristiques ne puissent être pertinentes que pour certaines occurences d'une entité ?.


    c'était par rapport à la représentation de tout mon matériels, si je devais procéder ainsi? et qui concerne ta citation ci-dessous


    Citation Envoyé par CinePhil Voir le message
    Donc si je comprends bien, tu as aussi d'autres types de matériel à prendre en compte. Tu vois que l'héritage te sera utile !
    merci et bon WD

  4. #24
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Effectivement, c'est ça l'héritage !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #25
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    Bonjour
    CinePhil stp, la notion d'héritage et de représentation intervallaire se schématise dans un MCD ou à quel niveau?

    merci

  6. #26
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Sur un projet récent, j'avais cet enchaînement d'héritages :
    etudiant -(1,1)----être----0,1- candidat -(1,1)----être----0,1- utilisateur -(1,1)----être----0,1- personne

    L'héritage se modélise donc très bien dans un MCD. La difficulté éventuelle à laquelle on peut être confronté, selon le logiciel de modélisation qu'on utilise, est que, normalement, les entités filles n'ont pas d'identifiant propre ; elles héritent de l'identifiant de l'entité mère.

    Quant à la représentation intervallaire, ça mérite réflexion.
    SQLPro ne donne pas de MCD dans son article. Il part de cette table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE NEW_FAMILLE
    (NFM_BG  INTEGER,
     NFM_BD  INTEGER,
     NFM_LIB VARCHAR(16))
    Elle ne contient pas de clé primaire ni de clé étrangère mais à la fin de son article, il donne toutes les procédures pour SQL Server pour un exemple d'arbre de nomenclature :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    -- création de la table T_NOMENCLATURE_NMC
    create table T_NOMENCLATURE_NMC
    (   NMC_ID                       INTEGER               identity,
        NMC_LIBELLE                  CHAR(32)              not null,
        NMC_DESCRIPTION              VARCHAR(1024)         null    ,
        NMC_NIVEAU                   INTEGER               not null,
        NMC_BG                       INTEGER               not null,
        NMC_BD                       INTEGER               not null,
        constraint PK_T_NOMENCLATURE_NMC primary key (NMC_ID))
    Il y a cette fois un identifiant artificiel mais la succession des éléments de la table ne se retrouve que par les colonnes NMC_BG et NMC_BD. Ce ne sont pas réellement des clés étrangères donc je ne pense pas qu'on puisse modéliser une auto-association, chaque borne gauche et droite étant unique.

    Intéressant problème de modélisation en effet !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #27
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    ok merci,
    puisque je ne maîtrise pas de logiciel analyseSI,
    Je t'envoie juste le premier essai d’héritage pour ma gestion de stock.

    le but est de faire une table stock matériels: puisque j'allais avoir plusieurs tables de stock pour chaque matériels

    les noms des stock se ressemble tous sauf pour le stock sim ou il existe un stock quarantaine? (les autres sont occupé, disponible, sav, perte), je sais pas si j'ai bien fait de l’ignorer!
    bref mon raisonnement est que chaque table de matériels balises, sim et antennes fassent partie d'un stock
    donc, je donne un id_matériel, le type du matériel, l'état de ce dernier avec la date entrée et sortie (ici aussi es ce que je fais un calendrier à part ou c'est aussi bien ainsi)?

    -les cardinalitées
    pour les cardinalités j'arrive pas a comprendre comment je dois raisonner,
    si stock_matériels je le prend comme si c'était un stock à chaque fois ou un seul stock mais qui regroupe un type de matériels à la fois???

    la crois dans l'association montre l'exclusion(comme j'ai pas su la représenter autrement)càd que le stock est soit un stock de balise soit de sim soit d'antenne mais pas tous à la fois.

    merci de me guider encore une fois.

  8. #28
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonsoir,

    Citation Envoyé par jogodepau Voir le message
    1- Le sous-service Livrer va avoir un compte livrer depuis lequel il va en se connectant voir tout les véhicules appartenant au sous-service Livrer
    2- Le sous-service Assembler va avoir un compte Assembler depuis lequel il va en se connectant voir tout les véhicules appartenant au sous-service Assembler
    3-Le service Mettre_en_place va avoir un compte Mettre_en_place depuis lequel il va en se connectant voir tout les véhicules appartenant au service Mettre_en_place ainsi qu'aux deux sous-services Livrer et Assembler
    4-Le client IBM va avoir un compte IBM depuis lequel il va en se connectant voir tout les véhicules appartenant à IBM càd les véhicules n'appartenant à aucun service ni sous-service et tout ceux qui appartiennent au service Mettre_en_place et aux sous-services Livrer et Assembler.
    Si je comprends bien, il y a au plus trois niveaux : le niveau client, le niveau service et le niveau sous-service.

    Il y aurait donc trois types de comptes : compte de type client, compte de type service et compte de type sous-service.

    Par ailleurs, un véhicule ferait référence exactement à un compte (un compte étant référencé par au moins un véhicule).

    Est-ce bien cela ?
    (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.

  9. #29
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    c'est bien cela!
    c'est une arborescence de compte a trois niveau.

    si je veux connaitre le compte d'un véhicule je vais remonter depuis son sous-service/service/compte père et voilà ou le contraire compte père/service/sous-service.

    bonne journée.

  10. #30
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonjour,


    Une arborescence a une profondeur (nombre de niveaux) quelconque. Dans votre cas, on pourrait représenter les choses autrement, par exemple, puisque l’on a trois types de comptes, les factoriser en une entité-type COMPTE (principe de généralisation) et établir les contraintes entre les « sous-types » compte de type client, compte de type servive et compte de type sous-service. A noter que l’entité-type VEHICULE est en relation non pas directement avec l’entité-type CLIENT, mais transitivement via COMPTE.

    MCD :



    MLD (Pour mieux préciser la structure, notamment quant aux relations entre clés) :


    Pour information : prenons par exemple le cas de la table COMPTE_SOUS_SERVICE. La paire {ClientId, CompteId} est à la fois clé primaire de cette table et clé étrangère par rapport à la clé primaire {ClientId, CompteId} de la table COMPTE. La paire {ClientId, CompteServiceId} est clé étrangère par rapport à la clé primaire {ClientId, CompteId} de la table COMPTE_SERVICE.

    Si cette structure ne convient pas, merci de préciser ce qui cloche.
    (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.

  11. #31
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    Re:

    Merci beaucoup pour les détails, je voulais poser quelques question car je n'ai pas votre expérience pour juger si cela cloche quelque part!

    1-c'est quoi la différence entre compte et compte client? es le compte qui regroupe tous les compte client (c'est juste par rapport aux attributs de chaque entité)
    2- j'ai vu que vous travaillez sur Open ModelShere si je ne me trompe pas!
    car vous en avez parlé dans le forum, je l'ai téléchargé mais je ne le maîtrise pas bien :

    -comment fait-on le dessin de l'exclusion (le rond avec une croix?)
    -y'aurait-il de la doc en français?
    - quand je vérifie l’intégrité de mon model il m'écrit:
    Les clés primaires ou uniques suivantes n'ont pas de colonnes ni de dépendances

    je ne comprend pas trop.

    merci d'avance; je suis sur la hiérarchisation du stock et je le poste pour avoir votre avis.

    merci encore.


    Alors voici une partie de mon MCD Stock, je l'ai fais à la main car je n'y arrivai pas avec les exclusion.

    merci de me dire ou ça cloche!

    je vous explique un peu, pour ne pas vous obliger à revenir en arrière

    j'ai matériels: balises, sims, antennes de ce qui est récurrent on peu avoir d'autres matériels de temps en temps batterie, cache etc...

    1-les balises ont un type et chaque type a ou non des paramètres (je ne sais pas où mettre les paramètres pour l'instant?)
    2-les sims n'ont pas de type tant qu'il ne sont pas affectées à une balise quand cette dernière est achetée par un client.
    3-une balise accepte une seul sim mais peu en changer au cours de sa vie
    4-les antennes ont un type, chaque antenne est affecté à une balise après l'achat de cette dernière par le client, mais peu en changer au courant de sa vie.

    ça c'est ce qui concerne le matériels.
    En ce qui concerne le stock :

    pour chaque matériels j'ai le même type de stock: occupé, disponible, SAV, supprimé seulement pour les sims ou j'en ai un cinquième quarantaine.

    Les questions que je me posent:
    -les cardinalités:
    balises 0,n-----0,n--antennes (le problème c'est qu'au début une antenne est affectée à une seul balise mais si elle tombe en panne on la remplace et puis elle peux être réparée et mise sur la même balise ou une autre)

    sims---0,n----0,n---balises (mêm chose une sim est affectée à une seul balise au début mais peux tomber en panne ou entrer en sav ....et après soit réaffectée à la même balise, soit à une autre)

    En fin pour les logiciel j'en ai téléchargé 3 lequel dois-je utiliser sachant que j'en maitrise aucun:
    Sybase Power AMC15
    Open ModelSpher3.1
    AnalyseSI
    ???

    merci et bonne soirée.

  12. #32
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par jogodepau Voir le message
    je voulais poser quelques question car je n'ai pas votre expérience pour juger si cela cloche quelque part!
    Je voulais dire : y a-t-il adéquation par rapport au besoin fonctionnel ? En effet, s’un strict point de vue technique, j’ai remplacé la vision nomenclature (arborescence) par une vision totalement différente, à savoir la généralisation / spécialisation (héritage si vous préférez) : la notion de profondeur (ou de hauteur) de l’arbre n’a plus lieu d’être.


    Citation Envoyé par jogodepau Voir le message
    c'est quoi la différence entre compte et compte client?
    COMPTE est une entité-type généralisée : un compte est un compte de type client ou service ou sous-service. Les attributs de cette entité-type sont ceux qui sont communs aux trois types. Même chose pour les relations avec les autres entités-types (VEHICULE par exemple).

    L’entité-type COMPTE_CLIENT est une spécialisation de la précédente : outre l’identifiant dont elle hérite, elle contient les attributs (s’ils existent) qui ne sont pas partagés avec les autres entités-types spécialisées, COMPTE_SERVICE et COMPTE_SOUS_SERVICE.


    Quand vous écrivez :
    Le client IBM va avoir un compte IBM
    Au niveau opérationnel, la situation est la suivante concernant ce compte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CLIENT (ClientId,  ClientNom,  ... )
            cli01      IBM         ... 
    
    COMPTE (ClientId,  CompteId,  DateCompte, ...)
            cli01      cpt01      2003-07-14  ...
    
    COMPTE_CLIENT (ClientId,  CompteId,  ... )
                   cli01      cpt01      ...
    Quand vous écrivez :
    Le service Mettre_en_place va avoir un compte Mettre_en_place depuis lequel il va en se connectant voir tout les véhicules appartenant au service Mettre_en_place
    J’interprète cela comme un service fourni en l’occurrence aux clients, par exemple au client IBM. La situation devient la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CLIENT (ClientId,  ClientNom,  ... )
            cli0l      IBM         ... 
    
    COMPTE (ClientId,  CompteId,  DateCompte, ...)
            cli0l      cpt01      2003-07-14  ...
            cli0l      cpt02      2003-07-15  ...
    
    COMPTE_CLIENT (ClientId,  CompteId,  ... )
                   cli0l      cpt01      ...
    
    
    COMPTE_SERVICE (ClientId,  CompteId,  CompteClientId,  ... )
                    cli0l      cpt02      cpt01            ...
    Quand vous écrivez :
    Le sous-service Livrer va avoir un compte livrer depuis lequel il va en se connectant voir tout les véhicules appartenant au sous-service Livrer
    J’interprète cela comme un sous-service fourni en l’occurrence au service Livrer (par exemple au client IBM). La situation devient la suivante :

    Code : 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
    CLIENT (ClientId,  ClientNom,  ... )
            cli0l      IBM         ... 
    
    COMPTE (ClientId,  CompteId,  DateCompte, ...)
            cli0l      cpt01      2003-07-14  ...
            cli0l      cpt02      2003-07-15  ...
            cli0l      cpt03      2003-07-15  ...
    
    COMPTE_CLIENT (ClientId,  CompteId,  ... )
                   cli0l      cpt01      ...
    
    COMPTE_SERVICE (ClientId,  CompteId,  CompteClientId,  ... )
                    cli0l      cpt02      cpt01            ...
    
    COMPTE_SOUS_SERVICE (ClientId,  CompteId,  CompteServiceId,  ... )
                         cli0l      cpt03      cpt02             ...
    Les valeurs des identifiants que j’ai utilisés sont purement symboliques.


    Citation Envoyé par jogodepau Voir le message
    j'ai vu que vous travaillez sur Open ModelShere si je ne me trompe pas!
    Concernant les modèles que je vous ai proposés, il s’agit de Power AMC.


    Citation Envoyé par jogodepau Voir le message
    comment fait-on le dessin de l'exclusion (le rond avec une croix?)
    Avec Open ModelSphere : à la main. Même pas grave, vous prendrez l’exclusion en compte au niveau SQL (à l’aide d’une assertion ou d’un trigger).


    y'aurait-il de la doc en français?
    Je pense, mais il faudrait demander à l’éditeur (Grandite) http://www.modelsphere.org/fr/support.html

    Vous pourriez vous essayer à MyQSL Workbench, avec lequel on modélise directement au niveau logique (même pas grave à nouveau), mais qui est moins compliqué à mettre en œuvre. L'essentiel est de produire une structure de base de données correcte par rapport au besoin.


    je suis sur la hiérarchisation du stock et je le poste pour avoir votre avis.
    C’est un feu d'artifice. Attendez qu'un problème soit résolu avant de passer au suivant.
    (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.

  13. #33
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Citation Envoyé par fsmrel Voir le message

    Je voulais dire : y a-t-il adéquation par rapport au besoin fonctionnel ? En effet, s’un strict point de vue technique, j’ai remplacé la vision nomenclature (arborescence) par une vision totalement différente, à savoir la généralisation / spécialisation (héritage si vous préférez) : la notion de profondeur (ou de hauteur) de l’arbre n’a plus lieu d’être.
    Oui, effectivement j'ai refais des exemples pour comprendre, je voie mieux; je me pose juste la question: es-ce qu'avec cette représentation je peux accéder au chemin de chaque compte d'un véhicule client, parce que on veux que cela apparaisse dans la base;
    exemple: si je rajoute chemin du compte comme propriété dans l'entité compte, es-ce que pour le client IBM si je veux exemple connaître le compte du véhicule ford 6 qui se trouve dans le sous service assembler dont le service est mettre-en place je voudrais avoir le chemin IBM/mettre-en-palace/assembler et comme ça je sais que le véhicule si je veux le visualiser je vais sur le compte assembler ou éventuellement mettre-en place ou encore IBM.

    c'est comme du charabia, j'espère que c'est pas tiré par les cheveux!




    Citation Envoyé par fsmrel Voir le message

    Concernant les modèles que je vous ai proposés, il s’agit de Power AMC.
    Pour Power AMC je l'ai es ce mieux de travailler avec ou je télécharge MyQSL Workbench c'est mieux?


    Citation Envoyé par fsmrel Voir le message

    C’est un feu d'artifice. Attendez qu'un problème soit résolu avant de passer au suivant.
    ça je ne vous le fait pas dire, sa part dans tout les sens dans ma tête (come je reprend du service depuis 4 ans à rien faire), en plus je n'arrive pas a focaliser mon énergie et j'ai bien envie de réussir mon application.

    alors merci pour l'aide et si c'est pas trop vous demander merci de me donner les ligne directive pour ne pas trop me disperser et finalement rester au point mort.

    merci encore.

  14. #34
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Ajoutons une entité-type permettant de connaître les libellés des différents types de compte, appelons-la COMPTE_DESCRIPTION :

    MCD


    MLD


    Du point de vue valeurs :

    Code : 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
    CLIENT (ClientId,  ClientNom,  ... )
            cli0l      IBM         ... 
    
    COMPTE_DESCRIPTION (CompteDescrId,  CompteDescrLibelle,  ...)
                        cds01           Client               ...
                        cds02           Mettre en place      ...
                        cds03           Assembler            ...
                        cds04           Machiner             ...
    
    COMPTE (ClientId,  CompteId,  DateCompte,  CompteDescrId,  ...)
            cli0l      cpt01      2003-07-14   cds01           ...
            cli0l      cpt02      2003-07-15   cds02           ...
            cli0l      cpt03      2003-07-15   cds03           ...
    
    COMPTE_CLIENT (ClientId,  CompteId,  ... )
                   cli0l      cpt01      ...
    
    COMPTE_SERVICE (ClientId,  CompteId,  CompteClientId,  ... )
                    cli0l      cpt02      cpt01            ...
    
    COMPTE_SOUS_SERVICE (ClientId,  CompteId,  CompteServiceId,  ... )
                         cli0l      cpt03      cpt02             ...
    
    VEHICULE (ClientId,  CompteId,  VehiculeId,  ...)
              cli0l      cpt03      veh01        ...
    On a tous les éléments pour retrouver tout ce qui concerne le véhicule 'veh01' : je vous laisse ruminer le "comment"...


    Pour Power AMC je l'ai, est-ce mieux de travailler avec ou je télécharge MyQSL Workbench, c'est mieux ?
    Power AMC est supérieur, car il permet en plus de réaliser des diagrammes conceptuels (MCD), vous pouvez produire du code SQL pour tous les SGBD dits relationnels. L'avantage de Workbench est qu'il est gratuit.
    (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.

  15. #35
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    ok, j'y avait pensée mais en ajoutant une propriété tupe_compte dans l'entité compte!

    Bref ça n'aurait pas permis de faire les jointure de table après.

    Voilà j'ai refait le model avec Workbench, Power AMC n'était qu'un essai au final (pas gratuit, je l'avais cru)

    Mes question sur le MySQL Workbench concerne les relation, j'ai trouvé quelques réponses sur le forum mais je voulais savoir:

    -1- sur ton model la relation client ---compte service tu-as un | côté client et un o côté service ou sous_service (que moi je n'arrive pas à faire), moi j'ai || côté client et o| côté service ou sous_service?

    -2- si l'entité compte comporte toutes les propriétés des entités compte client, compte_service et compte_sous_service, je ne sais plus quoi mettre comme propriétés dans ces dernières à part l'identifiant compte_client_id..etc
    es ce que si je met le nom_compte et nom_comte_service.. en même temps dans compte il y a nom_compte ça ne pose pas de problème, y a comme une redondance

    merci d'avance

  16. #36
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Pour spécifier les cardinalités sous MySQL Workbench, représentées par les o et les |, il faut double cliquer sur le lien (ou clic droit + Edit relationship) puis utiliser, dans l'onglet Foreign Key, la case à cocher Mandatory et les options One to Many et One to One.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  17. #37
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    Bonjour CinePhil,

    Citation Envoyé par CinePhil Voir le message
    Pour spécifier les cardinalités sous MySQL Workbench, représentées par les o et les |, il faut double cliquer sur le lien (ou clic droit + Edit relationship) puis utiliser, dans l'onglet Foreign Key, la case à cocher Mandatory et les options One to Many et One to One.
    Oui c'est comme ça que j'ai procédés car j'ai trouvé une discussion de ta part à ce sujet, ce que je me dis, si tu regarde mon schéma et celui de fesmel quand lui n'a que des o mois j'ai o| et quand lui a des | moi j'ai || et je ne comprend pas d'ou cela viens , d'abord es ce que la signification change?
    merci de me rassurer car je crains de ne même plus comprendre la signification de chaque signe:
    o représente 0,0
    o| représente 0,1
    et || représente 1,1
    o<- représente 0,n
    n'es ce pas? ou j'ai tout faux?
    merci

  18. #38
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par jogodepau Voir le message
    si tu regarde mon schéma et celui de fesmel quand lui n'a que des o mois j'ai o| et quand lui a des | moi j'ai || et je ne comprend pas d'ou cela viens
    Son schéma E/R n'est pas fait avec MySQL Workbench.

    d'abord es ce que la signification change?
    Dans son MCD, tu vois l'association suivante :
    CLIENT -1,n----associer----(1,1)- COMPTE

    Son logiciel de modélisation l'a traduit en schéma E/R de cette façon :
    CLIENT |-------------------------------|< COMPTE

    Déjà, tu peux constater que la position des cardinalités est inversée par rapport au MCD.

    Dans ton schéma E/R, tu as ceci :
    CLIENT ||-------------------------------|< COMPTE

    C'est bien identique et ça traduit mieux les cardinalités (1,n - 1,1) que le schéma du logiciel de fsmrel.

    merci de me rassurer car je crains de ne même plus comprendre la signification de chaque signe:
    o représente 0,0
    o tout seul est impossible ! Il n'y a jamais les cardinalités 0,0 dans un MCD sinon il n'y a plus d'association !

    o| représente 0,1
    et || représente 1,1
    o<- représente 0,n
    n'es ce pas? ou j'ai tout faux?
    Mais attention à la position des cardinalités ! Ça se lit comme dans le diagramme de classes UML.

    L'association déjà citée s'écrirait de cette façon en UML :
    CLIENT -1-------------------------------1..*- COMPTE

    Par contre, tu constates aussi une grosse différence dans ton schéma par rapport à celui de fsmrel : le nombre de clés étrangères qui participent à la clé primaire, notamment dans la table compte !
    C'est parce que tu as utilisé à chaque fois les "Identifying relationships" qui entraînent une identification relative et donc la création automatique d'une clé étrangère participant à la clé primaire. Tu peux changer ça dans l'onglet Foreign Key de l'association en décochant "Identifying relation".

    Bon courage pour la suite !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  19. #39
    Futur Membre du Club
    Femme Profil pro
    automaticienne
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : automaticienne
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par CinePhil Voir le message

    o tout seul est impossible ! Il n'y a jamais les cardinalités 0,0 dans un MCD sinon il n'y a plus d'association !
    oui mais alors c'est quoi la signification dans son cas?

    Citation Envoyé par CinePhil Voir le message
    Par contre, tu constates aussi une grosse différence dans ton schéma par rapport à celui de fsmrel : le nombre de clés étrangères qui participent à la clé primaire, notamment dans la table compte !
    C'est parce que tu as utilisé à chaque fois les "Identifying relationships" qui entraînent une identification relative et donc la création automatique d'une clé étrangère participant à la clé primaire. Tu peux changer ça dans l'onglet Foreign Key de l'association en décochant "Identifying relation".
    c'est quoi la différence entre Identifying relationships et Identifying relation et quand utiliser l'une et pas l'autre?

    Merci pour ton aide

  20. #40
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonsoir,

    Concernant Workbench, laissez-moi d'abord souffler !

    En attendant, voici une alternative à la modélisation que je vous ai proposée précédemment, qui consiste utiliser une nomenclature et la parcourir récursivement.

    MCD


    MLD



    Exemple d’utilisation avec SQL Server 2005 :

    Création des tables

    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
    CREATE TABLE CLIENT
    (
           ClientId    CHAR(05)          NOT NULL
         , ClientNom   VARCHAR(45)       NOT NULL
      , CONSTRAINT CLIENT_PK PRIMARY KEY (ClientId) 
    ) ;
     
    CREATE TABLE COMPTE_DESCRIPTION
    (
           CompteDescrId        CHAR(05)          NOT NULL
         , CompteDescrLibelle   VARCHAR(45)       NOT NULL
      , CONSTRAINT COMPTE_DESCRIPTION_PK PRIMARY KEY (CompteDescrId) 
    ) ;
     
    CREATE TABLE COMPTE
    (
           ClientId       CHAR(05)          NOT NULL          
         , CompteId       CHAR(05)          NOT NULL
         , CompteDate     DATETIME          NOT NULL
         , CompteDescrId  CHAR(05)          NOT NULL
      , CONSTRAINT ENTITE_GEO_PK PRIMARY KEY (ClientId, CompteId) 
      , CONSTRAINT ENT_TYPE_ENT_FK FOREIGN KEY (ClientId) 
              REFERENCES CLIENT (ClientId)  
    ) ;
     
    CREATE TABLE NOMENCLATURE
    (
           ClientId           CHAR(05)          NOT NULL          
         , CompteId           CHAR(05)          NOT NULL
         , CompteParentId     CHAR(05)          NOT NULL
      , CONSTRAINT NOMENCLATURE_PK PRIMARY KEY (ClientId, CompteId) 
      , CONSTRAINT COMPTE_FK1 FOREIGN KEY (ClientId, CompteId)  
              REFERENCES COMPTE (ClientId, CompteId)  
      , CONSTRAINT ENTITE_GEO_FK2 FOREIGN KEY (ClientId, CompteParentId)  
              REFERENCES COMPTE (ClientId, CompteId)  
    ) ;
     
    CREATE TABLE VEHICULE
    (  
           ClientId             CHAR(05)          NOT NULL          
         , CompteId             CHAR(05)          NOT NULL
         , VehiculeId           CHAR(05)          NOT NULL
         , VehiculeNom          VARCHAR(45)       NOT NULL
      , CONSTRAINT VEHICULE_PK PRIMARY KEY (ClientId, CompteId, VehiculeId) 
      , CONSTRAINT VEHICULE_FK FOREIGN KEY (ClientId, CompteId)  
              REFERENCES COMPTE (ClientId, CompteId)  
    ) ;

    Un p’tit jeu d’essai

    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
    INSERT INTO CLIENT VALUES ('cli0l', 'IBM') ;
    INSERT INTO CLIENT VALUES ('cli02', 'DVP') ;
     
    INSERT INTO COMPTE_DESCRIPTION VALUES ('cds01', 'Client') ;
    INSERT INTO COMPTE_DESCRIPTION VALUES ('cds02', 'Mettre en place') ;
    INSERT INTO COMPTE_DESCRIPTION VALUES ('cds03', 'Assembler') ;
    INSERT INTO COMPTE_DESCRIPTION VALUES ('cds04', 'Machiner') ;
    INSERT INTO COMPTE_DESCRIPTION VALUES ('cds05', 'Désinstaller') ;
    INSERT INTO COMPTE_DESCRIPTION VALUES ('cds06', 'Détruire') ;
     
    INSERT INTO COMPTE VALUES ('cli0l', 'cpt01', '2003-07-14', 'cds01') ;
    INSERT INTO COMPTE VALUES ('cli0l', 'cpt02', '2003-07-15', 'cds02') ;
    INSERT INTO COMPTE VALUES ('cli0l', 'cpt03', '2003-07-15', 'cds03') ;
    INSERT INTO COMPTE VALUES ('cli0l', 'cpt04', '2003-07-16', 'cds04') ;
    INSERT INTO COMPTE VALUES ('cli0l', 'cpt05', '2003-07-20', 'cds05') ;
    INSERT INTO COMPTE VALUES ('cli0l', 'cpt06', '2003-07-25', 'cds06') ;
    INSERT INTO COMPTE VALUES ('cli02', 'cpt01', '2004-06-18', 'cds01') ;
    INSERT INTO COMPTE VALUES ('cli02', 'cpt02', '2004-06-19', 'cds04') ;
     
    INSERT INTO NOMENCLATURE VALUES ('cli0l', 'cpt02', 'cpt01') ;
    INSERT INTO NOMENCLATURE VALUES ('cli0l', 'cpt03', 'cpt02') ;
    INSERT INTO NOMENCLATURE VALUES ('cli0l', 'cpt04', 'cpt02') ;
    INSERT INTO NOMENCLATURE VALUES ('cli0l', 'cpt05', 'cpt01') ;
    INSERT INTO NOMENCLATURE VALUES ('cli0l', 'cpt06', 'cpt05') ;
    INSERT INTO NOMENCLATURE VALUES ('cli02', 'cpt02', 'cpt01') ;
     
    INSERT INTO VEHICULE VALUES ('cli0l', 'cpt03', 'veh01', 'la fameuse Ford T6') ;
    INSERT INTO VEHICULE VALUES ('cli0l', 'cpt02', 'veh02', 'la caisse à Jojo') ;
    INSERT INTO VEHICULE VALUES ('cli02', 'cpt02', 'veh01', 'ma bagnole !') ;

    Une p’tite vue pour récupérer la nomenclature sous forme de chemin

    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
    CREATE VIEW CHEMIN (ClientId, CompteId, ParentId, CheminNom)
    AS 
    WITH V (ClientId, CompteId, CompteParentId, CheminNom) AS 
    (
    SELECT x.ClientId, x.CompteId, CAST('' AS CHAR(05)), CAST(y.ClientNom AS VARCHAR(MAX)) 
    FROM   COMPTE AS x
           JOIN CLIENT AS y 
           ON x.ClientId = y.ClientId
    WHERE  NOT EXISTS
           (SELECT ''
            FROM   NOMENCLATURE AS y
            WHERE  x.ClientId = y.ClientId AND x.CompteId = y.CompteId)     
      UNION ALL
        SELECT   x.ClientId, x.CompteId, x.CompteParentId
               , CAST(v.CheminNom AS VARCHAR(MAX)) + '\' + CAST(t.CompteDescrLibelle AS VARCHAR(MAX))
        FROM    NOMENCLATURE AS x JOIN V 
                ON x.ClientId = v.ClientId AND x.CompteParentId = v.CompteId 
                JOIN COMPTE AS z ON x.ClientId = z.ClientId AND x.CompteId = z.CompteId
                JOIN COMPTE_DESCRIPTION AS t
                ON z.CompteDescrId = t.CompteDescrId 
     )
    SELECT ClientId, CompteId, CompteParentId, CheminNom         
    FROM   V AS x

    Les services d’IBM :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CheminNom 
    FROM   CHEMIN 
    WHERE  CheminNom LIKE 'IBM%'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CheminNom
    ---------
    IBM
    IBM\Mettre en place
    IBM\Désinstaller
    IBM\Désinstaller\Détruire
    IBM\Mettre en place\Assembler
    IBM\Mettre en place\Machiner
    Le même, avec les voitures :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT x.CheminNom, COALESCE(y.VehiculeNom, '') AS Vehicule
    FROM   CHEMIN AS x
           LEFT JOIN VEHICULE AS y
           ON x.ClientId = y.ClientId AND x.CompteId = y.CompteId   
    WHERE  CheminNom LIKE 'IBM%'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CheminNom                        Vehicule
    ---------                        --------
    IBM 
    IBM\Mettre en place              la caisse à Jojo
    IBM\Désinstaller 
    IBM\Désinstaller\Détruire 
    IBM\Mettre en place\Assembler    la fameuse Ford T6
    IBM\Mettre en place\Machiner
    Seulement les voitures d’IBM et les services qui leur sont associés :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT x.CheminNom, y.VehiculeNom 
    FROM   CHEMIN AS x
           JOIN VEHICULE AS y
           ON x.ClientId = y.ClientId AND x.CompteId = y.CompteId
    WHERE  x.CheminNom LIKE 'IBM%'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CheminNom                       VehiculeNom
    ---------                       -----------
    IBM\Mettre en place             la caisse à Jojo
    IBM\Mettre en place\Assembler   la fameuse Ford T6
    Quel est le service de la fameuse Ford T6 :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT x.CheminNom, y.VehiculeNom
    FROM   CHEMIN AS x
           LEFT JOIN VEHICULE AS y
           ON x.ClientId = y.ClientId AND x.CompteId = y.CompteId   
    WHERE  y.VehiculeNom = 'la fameuse Ford T6'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CheminNom                       VehiculeNom
    ---------                       -----------
    IBM\Mettre en place\Assembler   la fameuse Ford T6

    Au fait, quel est votre SGBD ?

    Au cas ou vous utiliseriez ACCESS, je pense que l’excellent f-leb se fera un plaisir de vous montrer comment traiter de l’arborescence dans ce contexte.

    Concernant MySQL, je n’ai pas d’idée, je ne le connais que très imparfaitement...
    (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. Ce MCD est-il correct?
    Par bechir71 dans le forum Merise
    Réponses: 2
    Dernier message: 14/02/2014, 23h50
  2. [MCD]Est-ce que ce MCD est correct?
    Par nouras dans le forum Merise
    Réponses: 4
    Dernier message: 04/10/2013, 12h02
  3. lequel de mes CV est le meilleur
    Par slifer dans le forum CV
    Réponses: 18
    Dernier message: 26/11/2012, 12h10
  4. [MCD] Est-que mes cardinalités sont correctes ?
    Par Mika2008 dans le forum Schéma
    Réponses: 2
    Dernier message: 01/08/2009, 13h56
  5. [MCD] Est ce que ce MCD application de gestion de paie est correct ?
    Par hafcher dans le forum Schéma
    Réponses: 1
    Dernier message: 11/07/2008, 19h16

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