placé un element sous plusieurs catégorie dans une base de donnéés

placé un element sous plusieurs catégorie dans une base de donnéés - SQL/NoSQL - Programmation

Marsh Posté le 14-07-2003 à 17:20:05    

Voila je suis en train de réaliser un annuaire de sites, qui seront classés sous des catégories et sous catégories.  
Je suis en train d'élaborer ma base de données.  
J ai juste un ptit probleme, comment faire quand un site doit etre classé sous une catégorie, mais sous plusieurs sous catégorie.  
 
je realise ma base de données grace à phpMyAdmin

Reply

Marsh Posté le 14-07-2003 à 17:20:05   

Reply

Marsh Posté le 14-07-2003 à 17:37:49    

3 tables :
- les sites
- les catégories
- une table qui fait le lien entre les différentes catégories
 
Cette 3ème table peut être très simple, avec 2 champs seulement
- id_site
- id_cat

Reply

Marsh Posté le 14-07-2003 à 17:41:14    

j ai deja 3 tables,
 
j ai une table pour les liens, une pour les catégorie et une pour les sous catégories.

Reply

Marsh Posté le 14-07-2003 à 17:43:25    

sebinfo a écrit :

j ai deja 3 tables,
 
j ai une table pour les liens, une pour les catégorie et une pour les sous catégories.

et bien tu en fais une 4° avec les liens qui relient cat et sous-cat...

Reply

Marsh Posté le 14-07-2003 à 19:01:40    

lol, il a osé répondre :lol:

Reply

Marsh Posté le 14-07-2003 à 20:41:43    

comment je dois définir les clé dans cette 4 eme table ??

Reply

Marsh Posté le 14-07-2003 à 20:49:38    

Ce n'est peut être pas utile de faire une table intermédiaire entre les cats et les sous-cats. Il suffit d'une colonne dans la table des sous-cats indiquant l'id de la cat.

Reply

Marsh Posté le 14-07-2003 à 22:35:30    

Non le probleme c ke je ne pourrais pas mettre plusieurs fois le même site de cette facon, ta premiere idee etait pas mal, j ai essayé mais le pb c ke j ai mit 3 elements en clé primaire et ca dit ke je ne peux en mettre ke un seul

Reply

Marsh Posté le 14-07-2003 à 22:41:29    

sebinfo a écrit :

Non le probleme c ke je ne pourrais pas mettre plusieurs fois le même site de cette facon, ta premiere idee etait pas mal, j ai essayé mais le pb c ke j ai mit 3 elements en clé primaire et ca dit ke je ne peux en mettre ke un seul

Rien à voir avec les clés primaires... Aucun interet de vouloir en définir plusieurs

Reply

Marsh Posté le 14-07-2003 à 22:58:40    

ok mais je dois en définir au moins une alors laquelle ?

Reply

Marsh Posté le 14-07-2003 à 22:58:40   

Reply

Marsh Posté le 14-07-2003 à 23:03:14    

sebinfo a écrit :

ok mais je dois en définir au moins une alors laquelle ?

T'es pas obligé de définir une clé primaire sur t'as 4° table...

Reply

Marsh Posté le 14-07-2003 à 23:38:22    

OK, kan j ai exécuté ma requete y a pas eu d erreurs; maintenant kel requete je pourrais faire pour voir si l organisation de ma base est cohérente

Reply

Marsh Posté le 15-07-2003 à 09:18:54    

j ai retranscrit la structure de ma base sur microsoft acess; avec donc 4 tables (1 sites, 2 catgories, 3 sous catégories, 4 unions ( faisant le lien entre les 3 tables). et j'ai fait un teste sur des données, en insérant un site ce trouvant dans la catégorie informatique et dans 4 autres sous catégories.
 
en réalisant la requete suivante:
afficher les sites se trouvant dans la catégorie informatique, le pb c ke j obtient 4 résultats, et j en voudrais qu'un.
 
commen je peux régler ce pb?

Reply

Marsh Posté le 16-07-2003 à 01:12:08    

si j'ai bien compris ta structure, pour avoir les sites qui se trouvent ds la catégorie informatique essaie cette requete :
 
select nom_site, nom_cat from sites s, categorie c, union u
where (s.id_site = u.id_site)
and (u.id_cat = c.id_cat)
and (nom_cat = 'informatque')

Reply

Marsh Posté le 16-07-2003 à 15:33:54    

sebinfo a écrit :

[..]
je realise ma base de données grace à phpMyAdmin


sebinfo a écrit :

j ai retranscrit la structure de ma base sur microsoft acess
[..]

:heink:


Message édité par RiderCrazy le 16-07-2003 à 15:34:21
Reply

Sujets relatifs:

Leave a Replay

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