comment faire les tables pour mon problème

comment faire les tables pour mon problème - SQL/NoSQL - Programmation

Marsh Posté le 24-10-2002 à 16:14:02    

voilà
 
en fait j'aurai des trucs du genre:
 
 

[g]Programmation -> Internet -> PHP -> Tutorials ->[/g] ([#0000ff]url_1, url_2[/#0000ff])
[g]Programmation -> Internet -> PHP ->[/g] ([#e21c00]url_3, url_4, url_5[/#e21c00])
[g]Programmation -> Internet -> Tutorials ->PHP ->[/g] ([#0000ff]url_1, url_2[/#0000ff])
[g]Programmation -> Tutorials -> PHP ->[/g] ([#0000ff]url_1, url_2[/#0000ff])
[g]Programmation -> Internet -> PHP -> Tutorials ->[/g] ([#0000ff]url_1, url_2[/#0000ff])
[g]Programmation -> Internet -> PHP -> [/g]([#e21c00]url_3, url_4[/#e21c00])
 
[g]Programmation -> PHP -> Tutorials ->[/g] ([#0000ff]url_1, url_2[/#0000ff])
[g]Programmation -> PHP ->[/g] ([#e21c00]url_4, url_5[/#e21c00])


 
 
donc une catégorie peut etre la sous-catégorie de plusieurs catégories.
 
 
Mon problème est que je ne sais pas comment faire mes tables pour que les url se mettent au bon endroit :
 
Progra -> PHP -> Tut -> url_1
Progra -> Tut -> PHP -> url_1
 
 
si url_1 est dans la catégorie PHP (sous-categ de Tut)
comment lui dire de se mettre dans Tut quand Tut est sous-categ de PHP ?
 
En fait j'y arrive quand il n'y a que deux catégories concernées (PHP et Tut)
 
mais comment faire pour que ce soit général, pour que je puisse lier n'importes quelles catégories entre elles (comme en haut).
 
 
je sais pas si c'est très clair :sweat:


---------------
oui oui
Reply

Marsh Posté le 24-10-2002 à 16:14:02   

Reply

Marsh Posté le 24-10-2002 à 16:20:17    

si quelqu'un fait plus obscure, c'est qu'il vachement balèze

Reply

Marsh Posté le 24-10-2002 à 17:24:03    

En fait je verrais 4 tables :

Code :
  1. * CATEGORIES
  2.   ----------
  3.   ID_CATEG
  4.   NOM_CATEG
  5. -> contient la liste exhaustive et non hierarchisée des catégories
  6. * URL
  7.   -------
  8.   ID_URL
  9.   NOM_URL
  10. -> 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 :
  1. * HIERARCHIE_CATEG
  2.   ----------------
  3.   ID_CATEG_MERE
  4.   ID_CATEG_FILLE
  5.   NIV_MENU
  6. -> permet de définir pour chaque élément de menu la catégorie immédiatement supérieure.
  7. * URL_HIERARCHIE_CATEG
  8.   --------------------
  9.   ID_URL
  10.   ID_CATEG_MERE
  11.   ID_CATEG_FILLE
  12.   NIV_MENU
  13.  
  14. -> 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 :
  1. Table CATEGORIES : ID_CATEG  NOM_CATEG
  2.                    --------  ---------
  3.                    1         Programmation
  4.                    2         Internet
  5.                    3         PHP
  6.                    4         Tutorials
  7. Table HIERARCHIE_CATEG : ID_CATEG_MERE  ID_CATEG_FILLE  NIV_MENU
  8.                          -------------  --------------  --------
  9.                          1              1               1        (Programmation est au niveau 1 de menu et est donc elle-même catégorie mère et fille)
  10.                          1              2               2
  11.                          2              3               3
  12.                          3              4               4


La ligne Programmation -> Internet -> Tutorials ->PHP serait ensuite enregistrée :

Code :
  1. Table HIERARCHIE_CATEG : ID_CATEG_MERE  ID_CATEG_FILLE  NIV_MENU
  2.                          -------------  --------------  --------
  3.                          2              4               3
  4.                          4              3               4
  5. 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 :
  1. Table URL : ID_URL  NOM_URL
  2.             ------  -------
  3.             1       url_1
  4.             2       url_2
  5. Table URL_HIERARCHIE_CATEG : ID_URL  ID_CATEG_MERE  ID_CATEG_FILLE  NIV_MENU
  6.                              ------  -------------  --------------  --------
  7.                              1       3              4               4
  8.                              2       3              4               4
  9.                              1       4              3               4
  10.                              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
Reply

Marsh Posté le 24-10-2002 à 22:09:46    

waouw, je pensais pas que quelqu'un aurait compris ce que je voulais faire :p
 
C'est vrai que j'avais pas pensé à faire deux tables pour lier tout ca (j'suis neuneu aussi :) )
 
 
Merci, je vais un peu voir ca...
 
 
sinon j'étais en train de penser à une autre méthode, mais ce n'est pas encore tout à fait clair... et de toute facon, je sens que ca va pas marcher.  
 
 
Enfin je ferai tout ca demain parce que c'est l'heure de  :sleep:


---------------
oui oui
Reply

Marsh Posté le 25-10-2002 à 09:29:42    

Tiens-moi au courant, je suis curieux de savoir si ce que je propose répond bien à tes besoins...

Reply

Marsh Posté le 25-10-2002 à 13:49:06    

ok bien sur :)


---------------
oui oui
Reply

Marsh Posté le 28-10-2002 à 10:24:21    

bon voilà, je crois que je vais faire comme ca :
 
 
HIERARCHIE_CATEG  
----------------  
HIERARCHIE_CATEG_ID
ID_CATEG_MERE  
ID_CATEG_FILLE  
NIVEAU
 
 
SITES
-----
ID_HIERARCHIE_CATEG
ID_SITE
NIVEAU
 
 
voili :)
 
en tout cas, merci de ton aide :)


---------------
oui oui
Reply

Marsh Posté le 28-10-2002 à 13:35:03    

art_dupond a écrit a écrit :

bon voilà, je crois que je vais faire comme ca :
 
 
HIERARCHIE_CATEG  
----------------  
HIERARCHIE_CATEG_ID
ID_CATEG_MERE  
ID_CATEG_FILLE  
NIVEAU
 

SITES
-----
ID_HIERARCHIE_CATEG
ID_SITE
NIVEAU

 
voili :)
 
en tout cas, merci de ton aide :)




 
Effectivement utiliser une ID pour HIERARCHIE_CATEG n'est pas mal. Mais à ce moment-là, pourquoi garder la notion de NIVEAU au niveau de la table SITE, puisque celui-ci est déjà défini au niveau de HIERARCHIE_CATEG ? Cette redondance n'est à mon avis pas nécessaire : en effet, tu lanceras tes requêtes sur HIERARCHIE_CATEG principalement, du coup le NIVEAU sera déjà pris en compte du fait de la structure de la table ?

Reply

Marsh Posté le 28-10-2002 à 13:38:47    

oui c'est vrai :)
 
 
merci encore


---------------
oui oui
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed