Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/03/2006, 16h04   #1
En attente de confirmation mail
 
Inscription : mars 2006
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 45
Points : 4
Points : 4
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
Zebeber est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2006, 16h31   #2
Membre chevronné
 
Avatar de nako
 
Ingénieur développement logiciels
Inscription : août 2003
Messages : 581
Détails du profil
Informations personnelles :
Localisation : France

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

Informations forums :
Inscription : août 2003
Messages : 581
Points : 635
Points : 635
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+
nako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2006, 18h50   #3
Expert Confirmé
 
Avatar de neguib
 
Inscription : mai 2005
Messages : 3 633
Détails du profil
Informations personnelles :
Âge : 51

Informations forums :
Inscription : mai 2005
Messages : 3 633
Points : 3 967
Points : 3 967
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 :
__________________
Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles
neguib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 12h16   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
NAKO vous dites d'énormes bétises !!!

Citation:
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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 14h05   #5
Membre chevronné
 
Avatar de nako
 
Ingénieur développement logiciels
Inscription : août 2003
Messages : 581
Détails du profil
Informations personnelles :
Localisation : France

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

Informations forums :
Inscription : août 2003
Messages : 581
Points : 635
Points : 635
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é.
nako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 17h41   #6
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
;-)

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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 08h55   #7
En attente de confirmation mail
 
Inscription : mars 2006
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 45
Points : 4
Points : 4
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)
Zebeber est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h44.


 
 
 
 
Partenaires

Hébergement Web