En fait je verrais 4 tables :
Code :
- * CATEGORIES
- ----------
- ID_CATEG
- NOM_CATEG
- -> contient la liste exhaustive et non hierarchisée des catégories
- * URL
- -------
- ID_URL
- NOM_URL
- -> contient la liste exhaustive des URL
|
Puis deux tables qui permettront l'une de hiérarchiser les catégories en fonction du niveau de menu, et l'autre d'associer une URL à une hiérarchie donnée
Code :
- * HIERARCHIE_CATEG
- ----------------
- ID_CATEG_MERE
- ID_CATEG_FILLE
- NIV_MENU
- -> permet de définir pour chaque élément de menu la catégorie immédiatement supérieure.
- * URL_HIERARCHIE_CATEG
- --------------------
- ID_URL
- ID_CATEG_MERE
- ID_CATEG_FILLE
- NIV_MENU
-
- -> permet d'associer une ou plusieurs URL pour une categorie hiérarchisée donnée, et pour un niveau de menu donné.
|
Exemple : la ligne Programmation -> Internet -> PHP -> Tutorials serait ainsi enregistrée :
Code :
- Table CATEGORIES : ID_CATEG NOM_CATEG
- -------- ---------
- 1 Programmation
- 2 Internet
- 3 PHP
- 4 Tutorials
- Table HIERARCHIE_CATEG : ID_CATEG_MERE ID_CATEG_FILLE NIV_MENU
- ------------- -------------- --------
- 1 1 1 (Programmation est au niveau 1 de menu et est donc elle-même catégorie mère et fille)
- 1 2 2
- 2 3 3
- 3 4 4
|
La ligne Programmation -> Internet -> Tutorials ->PHP serait ensuite enregistrée :
Code :
- Table HIERARCHIE_CATEG : ID_CATEG_MERE ID_CATEG_FILLE NIV_MENU
- ------------- -------------- --------
- 2 4 3
- 4 3 4
- NB : les 2 premiers éléments du menu ont déjà été codés précédemment.
|
et ainsi de suite...
Puis les URL correspondantes sont associées :
Code :
- Table URL : ID_URL NOM_URL
- ------ -------
- 1 url_1
- 2 url_2
- Table URL_HIERARCHIE_CATEG : ID_URL ID_CATEG_MERE ID_CATEG_FILLE NIV_MENU
- ------ ------------- -------------- --------
- 1 3 4 4
- 2 3 4 4
- 1 4 3 4
- 2 4 3 4
|
et ainsi de suite...
Ensuite pour une requête tu n'aurais plus qu'à envoyer en paramètres pour ta requête le niveau de menu où tu te trouves, la catégorie où tu te trouves (correspond à la catégorie fille) et la catégorie immédiatement supérieure (correspond à la catégorie mère).
Voilà, c'est tout pour l'instant, ce n'est qu'un premier jet, libre à tout le monde de critiquer / affiner ce modèle de données...
Message édité par irulan le 24-10-2002 à 17:30:02