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 :

Doute sur la reflexivite et sa transformation [MCD]


Sujet :

Schéma

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut Doute sur la reflexivite et sa transformation
    Bonsoir !

    Je souhaite concevoir l'architecture d'une BDD.
    Je suis débutant et n'ai fait de Conception que sous la contrainte, quand je savais déjà quel type d'architecture il fallait adopter.
    C'était des cas simples et je n'ai jamais perçu la modélisation comme quelque chose d'utile, puisque je dessinais les tables au brouillon et me reposais dessus pour créer les diagrammes approximatifs en UML : je faisais tout à l'envers.

    Aujourd'hui je doute sérieux alors que ce que j'aimerais représenter me parait simple :

    Un objet possède un nom.
    Exemple : obj1, obj2, obj3, obj4, obj5, obj6.

    Il peut être construit à partir de différents objets.
    Exemple : obj1 = obj2 + obj3.

    Il peut permettre de construire d'autres objets.
    Exemple : obj2 = obj4 + obj5. obj5 = obj3 + obj4 + obj6.


    Il y a donc une entité Objet qui interagit avec elle même.
    J'ai consulté les FAQ UML et Merise, et c'est la relation réflexive qui me parait être le plus proche de ce cas.
    Or dans l'exemple donné il n'y a qu'une seule relation : http://merise.developpez.com/faq/?pa...ationreflexive
    Ici il me semble qu'il y en a deux : construire et être construit par.
    Les noms sont ils adaptés ? Et est-il possible d'en mettre deux ?

    J'ai essayé de le dessiner cela avec boUML, j'y arrive pas. Je suppose que c'est avec un outil de Merise que je ne possède pas encore ?

    Une fois que ce sera dessiné, il me faudra le transformer.
    Si je comprends bien l'exemple donné (http://merise.developpez.com/faq/?pa...LD_Reflexivite) il me faut créer deux autres tables, construire et être construit par.
    construire aurait deux attributs : l'id de l'objet qui peut construire, et l'id de l'objet qui est construit, et ce autant de fois que l'objet peut construire.
    construit par aurait lui aussi deux attributs : id de l'objet qui est construit et l'id de l'objet qui peut construire, et ce autant de fois que le nombre d'objet nécessaire à sa construction.
    => J'ai peur que ces deux tables fassent doublon, j'avoue que je m'embrouille pas mal.

    Voilà, si vous arrivez à comprendre mon charabia, pourriez vous essayer de m'aiguiller un peu ?
    Tous les conseils sont bienvenus !

    SmallFitz.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    Salut,
    je procédais comme toi jusqu'à cette semaine où j'ai décidé de faire les choses dans les règles pour un projet plus conséquent.

    Je me suis vite rendu compte que je devais repasser par la case théorie pour avancer.
    http://www.developpez.net/forums/new...te=1&p=6366922
    'Parlez-vous Merise?' m'a bien aidé, notamment la partie sur le modèle conceptuel des données (MCD).

    Mais revenons à ton soucis.
    Il s'agit bien d'une relation réflexive de l'entité 'objet' vers lui-même via la
    relation 'construire'. Le verbe 'constituer' ou 'composer' serait peut-être plus approprié d'après ton exemple.
    Comme le document précité l'indique, le verbe utilisé pour nommer une relation est explicite dans un sens:
    - un objet 'compose' aucun, un ou plusieurs autres objets
    mais il faut l'adapter dans l'autre sens:
    - un objet 'est composé par' aucun, un ou plusieurs autres objets
    Il s'agit donc d'une entité objet et d'une unique relation 'construire' dans ton cas.

    Je ne pense pas que boUML te permette de créer ton MCD du moins pas aussi facilement que des softs comme powerAmc ou Open ModelSphere permettent de créer un mcd puis de générer un modèle physique des données (les tables et leurs contraintes).

    Pour avoir une idée de ce que ton modèle donnera sous forme de tables dans ton SGBD il faut définir les cardinalités des 2 cotés (les pattes)de ta relation 'composer'.

    Objet - compose 0,n-------(Composer)-------est composé par 0,n - Objet
    veut dire qu'une occurrence de l'entité objet composera 0,1 ou plusieurs autres objet et qu'une occurrence de l'entité objet sera composée de 0,1 ou
    plusieurs objets.

    Voir cet article pour les cardinalités:
    http://blog.developpez.com/cinephil/...ive/#more10017

    Dans le cas d'une relation 0,n 0,n, une table associative sera créée:

    |ComposeObjet|
    ------------------
    objet_id
    composant_id

    avec une PK composite et 2 FK.

    Voilà, il est tard et j'espère ne pas avoir dit de bêtise. Sous réserve
    de confirmation donc.

    Bon courage

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


    Sujet souvent évoqué chez Developpez.com, dans les forums orientés bases de données.

    Quelques pistes :

    Chez jogodepau, avec l'exemple des comptes qui composent une nomenclature (un compte peut être composés de comptes qui à leur tour, etc.) :
    http://www.developpez.net/forums/d10...t/#post6066252

    Et un peu plus loin :
    http://www.developpez.net/forums/d10...t/#post6066384

    Suivi d'une représentation selon MySQL Workbench :
    http://www.developpez.net/forums/d10...t/#post6067658

    Exemple avec ACCESS :
    http://www.developpez.net/forums/d10...s/#post5786512

    Chez Rahan :
    http://www.developpez.net/forums/d10...s/#post5794180

    Arbres sous toutes leurs formes :
    http://www.developpez.net/forums/d91...s/#post5205169

    exemple SQL Server :
    http://www.developpez.net/forums/d11...ntation-arbre/

    Etc.

    Bonne lecture.
    (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.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Merci pyd001 pour tes explications et liens qui m'aident à y voir bien plus clair.
    Je vais utiliser un des outils que tu me conseilles et y'aura plus qu'à créer !
    Comme toi je comprends aujourd'hui tout l'intérêt de la conception !

    Merci fsmrel pour tous ces liens. Je les met de côté pour l'instant, je n'ai pas encore le niveau pour tout comprendre. J'ai failli m'évanouir (je plaisante) quand je me suis intéressé aux arbres, chose que je n'ai jamais étudié mais qui à l'air passionnant... Et très complexe !

    Merci à vous deux, je vous souhaite un bon dimanche !

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


    Citation Envoyé par SmallFitz Voir le message
    J'ai consulté les FAQ UML et Merise, et c'est la relation réflexive qui me parait être le plus proche de ce cas.
    Or dans l'exemple donné il n'y a qu'une seule relation : http://merise.developpez.com/faq/?pa...ationreflexive
    Ici il me semble qu'il y en a deux : construire et être construit par.
    Une seule relation certes, mais il y a bien deux pattes, avec un rôle attaché à chacune d’elles : Composant d’une part, Composé d’autre part, donc tout va bien.

    Reprenons l’exemple du graphe des pièces entrant dans la fabrication d’engins volants, proposé à skatah et ledelb :

    Des pièces entrent dans la composition d’autres pièces et des pièces sont composées de pièces. Au niveau des opérations, donc de la base de données, on a d’une part une table des pièces et d’autre part une table des relations entre les pièces, matérialisant les rôles composant/composé :

    Table des pièces :





    Table des relations entre les composants et les composés :





    Le diagramme logique correspondant (MLD au sens Merise) est le suivant :




    Variante MySQL Workbench :




    En remontant au niveau conceptuel, le diagramme (MCD au sens Merise) est le suivant :



    Et pour ne pas faire de jaloux, allons-y pour un diagramme de classes UML :




    Les diagrammes ci-dessus ont été réalisés avec Power AMC (payant). Vous pouvez aussi essayer avec Open ModelSphere ou MySQL Workbench (gratuits).


    Citation Envoyé par SmallFitz Voir le message
    J'ai essayé de le dessiner cela avec Bouml, j'y arrive pas.
    Je n’ai jamais eu l’occasion d’utiliser Bouml, mais je serais très étonné qu’il ne permette pas de produire le diagramme de classes ci-dessus.

    Bonne fin de dominique.
    (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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Doute sur le booléen SQLServer
    Par mael94420 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/08/2006, 16h17
  2. doute sur requete SQL
    Par gwendk dans le forum ASP
    Réponses: 19
    Dernier message: 31/05/2006, 17h15
  3. Petite doute sur static...
    Par Paulinho dans le forum C++
    Réponses: 2
    Dernier message: 26/01/2006, 11h06
  4. [Débutant] Doute sur Constraint
    Par Paulinho dans le forum Débuter
    Réponses: 3
    Dernier message: 14/12/2005, 14h35
  5. Doute sur Constraint
    Par Paulinho dans le forum Débuter
    Réponses: 5
    Dernier message: 14/12/2005, 09h36

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