moustik510
Messages postés8Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention24 mars 2005
-
24 mars 2005 à 14:16
moustik510
Messages postés8Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention24 mars 2005
-
24 mars 2005 à 15:35
Bonjour, j'aurais besoin d'aide
pour mon stage:
L'entreprise veut un affichage dynamique de ses produits, j'ai choisi PHP +
mysql. Je n'ai pas de questions sur le codage, ça il n'y a aucun problème.
C'est pour la structure de la base de données que j'hésite.
1- Soit je suis le modèle scolaire de la base de données relationnelle avec une
table "catégories" et une table "produits"
-->pb : pour rechercher toutes les fenetres, il faut un
"select * from produit where categorie=fenetre" ce qui peut être long
si la liste complète des produits est longue non?
2- Soit je fais une table par catégorie (fenetre, stores, portes etc...) avec
la liste des produits dans chaque table.
-->je récupére la liste des catégories avec "show
tables" et la liste des produits avec "select * from fenetres",
c'est pas un peu couteux en place?
La base de données sera stockée sur un serveur qui n'appartient pas à
l'entreprise, donc la taille n'est pas l'élément le plus important.
Quel est le choix qui conviendrait le mieux sachant que :
-->la liste des catégories sera très rarement modifiée
-->la liste des produits peut être importante
Merci par avance à tous les membres de ce site qui m'aident énormément.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 24 mars 2005 à 14:31
Hello,
primo, tu ne fais pas de SELECT *, ce sera deja ca de gagner (nomme
tous les champs que tu veux aller chercher, meme si la liste est
longue).
Moi je ferais une jointure, sinon. Une table intermediaire, avec
id_categorie, id_produit. Comme ca tu ne fouilles pas la table
produits, mais une table, certes aussi longue, mais avec bien moins de
champs. Et a partir de cette jointure, tu vas ne chercher dans la table
produits que les produits dont tu as trouve les id (id_produit lie au
id_categorie voulu)..
moustik510
Messages postés8Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention24 mars 2005 24 mars 2005 à 14:39
OK, merci pour ta réponse TRES rapide.
donc la solution 1 est la mieux selon toi? Si je n'avais pas de réponse, j'aurais choisi la 2 je pense.
mais j'aime bien ton idée pour la table intermédiaire , j'aurais juste
à la mettre à jour à chaque modification de la catégories ou de la
table produits.
ta table intermédiaire, c'est une view? je ne sais pas si ça existe en
mysql, c'est pour ça que je demande (j'ai été formé au SQL sur oracle)
encore merci pour ta réponse et ta rapidité
Moustik
La piqure sera terrible...
Vous n’avez pas trouvé la réponse que vous recherchez ?
moustik510
Messages postés8Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention24 mars 2005 24 mars 2005 à 15:03
Donc pour être sur :
pour vous la solution 1 (tables catégories et produits + table
intermédiaire) sera pour rapide que la solution 2 (une table par
catégorie)
pour tucsouffle : moi je pense que le "select col1,col2,col3 from
produits" (merci malalam) de la solution 1 est plus lent que le "select
col1,col2,col3 from fenetres" de la solution 2 car la table produits
comprendra tous les produits alors que la table fenetre sera
significativement plus petite.
Mais bon c'est vrai que la liste ne sera pas gigantesque non plus ...c'est décidé, je prend la solution 1, merci à vous deux, réponse acceptée.
Tout en dehors du sujet : ce n'est pas possible de faire des citations des réponses précédentes? je ne sais pas comment faire.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 24 mars 2005 à 15:09
Bah je ne pense pas que ce soit plus rapide parce que tu feras un
adressage direct de toutes facons. Enfin chais pas, peut-etre lol.
Et a mon avis donc, oui, la solution avec table intermediaire sera plus
rapide mais ce n'est pas garantie, je ne suis pas du tout un pro des
bases de donnees...hein.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 24 mars 2005 à 15:20
Reflexion faite apres un peui de lecture, lol, il semble que ce ne soit
pas plus rapide et que tu peux en rester a produits et categories.
En tous cas, sur de sur, suis d'accord avec Tuc, ta 2eme solution est a proscrire.
donc table produits avec id_categorie dedans, et table categorie avec
id_categorie dedans aussi evidemment. Apparemment les tables
intermediaires se font si il y a plus de relations que un a un, ou meme
un a plusieurs. (plusieurs a plueisurs en fait, dans ce cas on cree de
nouvelles tables)