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 :

[Conception]Gérer 1 hiérarchie


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [Conception]Gérer 1 hiérarchie
    Bonjour amis développeurs,

    je vais vous exposer mon probleme que je situe plutôt de l'ordre conceptuel.
    Disons que j'ai une table ELEMENT (id_element,lib_element), chaque élément peut être affecté à un groupe (id_groupe,lib_groupe) voir à plusieurs groupes. Chacun de ces groupes
    pouvant être aussi constitués de groupe et éléments (on pourrait parler de groupe de groupe) et ceci à l'infini
    je ne vois pas comment je pourrais concevoir mes tables sachant que j aimerai bien utilise la Modélisation par méta données et connaitre le niveau du groupe ex: groupe simple alors niveau 1 , groupe de groupe alors niveau 2 et ainsi de suite .
    Si vous avez des idées, je suis preneur .

    Merci d'avance

  2. #2
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Points : 9
    Points
    9
    Par défaut
    Pour le schéma conceptuel de ce problème voir ClassDiagram.ppt.

    J'ai supposé qu'un élément ou un groupe n'est enfant que d'un seul groupe. Remarquons que si ce n'était pas le cas (plusieurs parents) la notion de niveau n'est pas unique (il peut y avoir plusieurs niveaux, un par parent).

    Le schéma de classe se traduit par le schéma relationnel (schéma de tables) suivant :
    groupe (id_groupe, lib_groupe, id_parent)
    element (id_element, lib_element, id_groupe)

    Pour la notion de niveau, j'espérais qu'une vue sur groupe pourrait faire l'affaire. Malheureusement, ça nous donne une définition récursive que SQL ne peut pas accepter.

    Bonne chance tout de même.
    Images attachées Images attachées

  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 Nomenclatures
    Bonjour,

    Ce genre de problème en relation avec les nomenclatures et la récursivité a déjà fait l'objet d'échanges sur ce forum.

    Voir notamment :

    [Résolu] [MCD] Gestion d'une nomenclature et des ensembles (problème soumis par Corben).

    En descendant au niveau SQL, des SGBD comme Oracle ou DB2 vous donnent tous les renseignements (certes, il faut passer au moins un couple d'heures de lecture attentive...)

    ------------------------------
    Oracle Database SQL Reference

    http://www.oracle.com/pls/db102/to_t...ing+Started%29
    http://download-uk.oracle.com/docs/c...b14200/toc.htm

    http://download-uk.oracle.com/docs/c...102/b14237.pdf

    mots clés dans Oracle : connect by, recursive

    ------------------------------
    DB2

    http://www-306.ibm.com/software/data...manualsv9.html

    ftp://ftp.software.ibm.com/ps/produc...S/db2s1e90.pdf
    ftp://ftp.software.ibm.com/ps/produc...S/db2m2e90.pdf

    mots clés dans DB2 : Common-table, With, Recursive
    (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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    merci pour vos différentes réponses.
    Effectivement j'avais déja planché sur la récursivité mais ceci est très couteux au delà du 4ème niveau de plus elle n'est pas assuré par tous les sgbdr d'où mon attrait pour la représentation intervallaire .
    Encore merci pour ceux qui ont laissé quelques neurones

  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
    Bonjour Zebullon,

    Citation Envoyé par Zebullon
    j'avais déja planché sur la récursivité mais ceci est très couteux au delà du 4ème niveau
    Dans un contexte relationnel, le coût d'une requête peut varier énormément : selon la façon dont on la code, selon la présence des index qui vont bien, une requête qui peut prendre 10 millisecondes peut aussi prendre des heures si on n'a pas effectué les réglages qui vont bien.

    Par exemple, avec Oracle, si l’on veut transformer des balayages de tables rédhibitoires en traversées verticales d’index, il faut avoir en tête cet avertissement quand on se lance dans le récursif :

    "If the WHERE predicate contains a join, Oracle applies the join predicates before doing the CONNECT BY processing".

    Procéder au réglage des requêtes fait partie du jeu (maîtriser d’abord l'instruction EXPLAIN ou son équivalent selon le SGBD)...

    Personnellement, j'ai effectué des requêtes récursives sur des tables de 500 000 lignes, pour passer d'un temps de 5 minutes à 100 millisecondes après réglages.
    (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. [Conception] Gérer les commandes client
    Par djoumusic dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/06/2008, 10h54
  2. [Conception] Gérer les id supprimés
    Par jexl dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/04/2007, 17h23
  3. [Conception] Comment afficher données en hiérarchie
    Par rico the hobbit dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/03/2007, 09h42
  4. Réponses: 2
    Dernier message: 10/10/2006, 12h38
  5. [Conception] gérer le nombre de lignes par page
    Par john.dbc dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/08/2006, 20h20

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