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

Décisions SGBD Discussion :

[Site Web]Comment former une table type Menu arborescent? [Débutant(e)]


Sujet :

Décisions SGBD

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 86
    Points : 41
    Points
    41
    Par défaut [Site Web]Comment former une table type Menu arborescent?
    Bonjour,

    je dois créer un menu qui sera dans un composant treeview pour un site.
    Cependant, j'ai un peu de mal avec mes bases de données, et je ne sais pas comment je pourrais créer une table qui contiendrais les éléments de mon menu. Quels champs dois-je mettre pour que ce soit vraiment une bonne structure de table?

    Il faut savoir que j'insère mon contenu du menu au chargement de la page qui contient celui-ci. (pour l'instant je fais des test avec un simple nom de menu, sans sous menu...)
    J'ai donc besoin, je suppose, de savoir si un élément du menu est un noeud racine ou un noeud enfant.

    Mon problème est donc de savoir quels champs je dois mettre dans ma table, et quelle requête je dois exécuter pour afficher les éléments dans mon treeview?


    merci d'avance,

    Zebeber

  2. #2
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Bonjour, le problème de la représentation arborescente en base de données relationnelle est qu'il met en jeu des problème de récursivité, pas implémentable en interrogation SQL, ce qui se transforme donc en un nombre important de requetes.
    Dans le cas d'un menu, tout dépend de la profondeur de l'arbre.
    Et tout dépend aussi du nombre de données à afficher.
    Si le nombre de menus est raisonnable, on pourrait envisager de charger tout le menu (1 seule requete SQL) puis de reconstruire l'arborescente avec un langage de programmation, pour enfin n'afficher que ce que l'on souhaite afficher.

    Il existe par ailleurs des techniques plus ou moins exotiques pour représenter des structure arborescentes en base de données, mais je ne sais pas si ça t'intéresse ?

    Sinon, si otn menu n'est pas trop gros, tu peux utiliser une structure qui ressemble à ça (à adapter après à ton cas)

    item(item_id, item_pere_id, label, position)

    Désolé pour les digressions en début de message, je me suis peut-être emballé !
    a+

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonsoir Zebeber

    Comme tu parles de TreeView , es-tu sous techno ASP.Net ?
    Sinon une base de données me paraît un peu lourd pour un simple affichage d'une arborescence sachant que tu disposes de xml :

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 896
    Points : 53 130
    Points
    53 130
    Billets dans le blog
    6
    Par défaut
    NAKO vous dites d'énormes bétises !!!

    le problème de la représentation arborescente en base de données relationnelle est qu'il met en jeu des problème de récursivité, pas implémentable en interrogation SQL
    Depuis la version SQL:1999, soit 7 ans les requêtes récursives sont normalisées.
    Des SGBDR comme Oracle ont implémenté des solutions spécifiques bien avant cette date.

    Voici un article récent que j'ai écrit sur ce sujet :
    http://www.sqlservercentral.com/columnists/fBROUARD/recursivequeriesinsql1999andsqlserver2005.asp
    et un autre en français :
    http://sqlpro.developpez.com/SQL_Server_2K5/N1.php
    paragraphe : 1.5 Écriture des expressions de table (CTE : Common Table Expression, norme SQL:1999) :

    En l'absence de cette clause WITH, il est possible de représenter un arbre en mode intervallaire afin d'éviter toute récursivité du SQL.
    Voir les différents articles que j'ai consacré à la chose :
    http://sqlpro.developpez.com/cours/arborescence/

    A +

  5. #5
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Citation Envoyé par SQLpro
    NAKO vous dites d'énormes bétises !!!

    Je ne connaissais pas du tout.
    Je vais donc me tenir au courant.
    Désolé.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 896
    Points : 53 130
    Points
    53 130
    Billets dans le blog
    6
    Par défaut
    ;-)

    C'est pas grave on est là pour ça !!!!

    mais je constate que l'enseignement sur SQL dans les écoles d'ingé et les fac est assez médiocre !

    A +

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    Je suis sous webdev version 9.
    Mon menu aura uniquement 2 niveaux.
    donc un genre à ça :

    Home
    Services
    - service1
    - service2
    - service3
    Réalisations
    - réalisation1
    - réalisation2
    - réalisation3
    Autremenu
    News

    Mon menu sera affichable dans 5 langues, voila pourquoi je veux le mettre dans une base de données.
    En plus, j'ai fait un outil de gestion de contenu pour ce site, qui me permet de modifier tous les textes de mon site, et qui me permettra aussi par la même occasion (et via ce même outil) de gérer le contenu de mon menu (le texte, pas le nombres d'entrées)

Discussions similaires

  1. Réponses: 12
    Dernier message: 13/09/2013, 10h06
  2. Réponses: 3
    Dernier message: 15/02/2011, 14h55
  3. Réponses: 2
    Dernier message: 16/05/2007, 16h13
  4. Site web : Comment gérer une version Officiel et Officieuse
    Par AlphaYoDa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 05/12/2005, 08h48
  5. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/12/2003, 12h09

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