Moteur de recherche - SQL/NoSQL - Programmation
Marsh Posté le 15-06-2007 à 15:46:38
la deuxième, sans hésiter un quart de seconde, la première est affreuse pour la recherche.
Marsh Posté le 15-06-2007 à 18:19:42
ok et donc il faut que je crée ensuite un index sur idRecette et idIngrédient de la table d'association pour optimiser la recherche c'est ça ?
Marsh Posté le 16-06-2007 à 11:02:43
Deamon a écrit : ok et donc il faut que je crée ensuite un index sur idRecette et idIngrédient de la table d'association pour optimiser la recherche c'est ça ? |
étant donné que ce couple est la clé primaire de la table en question, ça me parait évident.
Marsh Posté le 16-06-2007 à 12:15:18
Ok merci bien.
Et autre question : est-ce possible de gérer facilement les ingrédients dont le nom est parfois au pluriel et parfois au singulier ? Par exemple si on rentre une recette avec 1 pomme et une autre avec 2 pommes il faudrait que les deux soient reliés à l'aliment "pomme". Et si oui comment car là j'avoue que j'ai un peu de mal à voir comment mettre ça en place.
Marsh Posté le 16-06-2007 à 12:29:07
bah tu 2 champs dans ta table ingrédients, un pour le singulier, un pour le pluriel...ou alors tu te contentes de mettre un (s) à l'affichage si tu t'en fiches un peu...
Marsh Posté le 18-06-2007 à 10:29:57
Solution subsidiaire : tu proposes une liste des ingrédients connus plutôt que de laisser la main à l'utilisateur.
Du coup, pour simplifier, tu rajoutes une table "catégorie" pour les ingrédients, histoire de pouvoir séparer dans la liste les viandes, les légumes, les condiments, etc.
Marsh Posté le 18-06-2007 à 18:37:17
MagicBuzz a écrit : Solution subsidiaire : tu proposes une liste des ingrédients connus plutôt que de laisser la main à l'utilisateur. |
c'est un des intérêts de la 2nde méthode.
Marsh Posté le 18-06-2007 à 19:01:20
ReplyMarsh Posté le 18-06-2007 à 23:50:05
MagicBuzz a écrit : Oui, et ça résoud ton problème de "avec ou sans S" |
non le problème du "s" c'était pour l'affichage de la recette pas pour la recherche.
Marsh Posté le 19-06-2007 à 09:51:54
Si c'est pour l'affichage, un bête test au niveau de php permettra d'afficher le 's' ou pas selon la quantité.
Sur le principe :
Si ( quantité > 1 ) alors
ingrédient = valeur_BDD;
sinon
ingrédient = valeur_BDD + "s"
Fin si
Marsh Posté le 19-06-2007 à 10:21:02
il faudra quand même un peu plus que ca sinon il va se retrouver avec des 100 gr de sels
Marsh Posté le 19-06-2007 à 12:47:09
La où ça devient coton, c'est aussi faire la différence entre :
1 olive
1 kg d'olives
Marsh Posté le 19-06-2007 à 13:01:24
MagicBuzz a écrit : La où ça devient coton, c'est aussi faire la différence entre : |
olives : 1
olives : 1 kg
Marsh Posté le 19-06-2007 à 14:04:22
c'est vrai que le choix de tout taper au pluriel: c'est pas bete, sinon faut carrement se garder une table de regle grammaticale, le truc completement con a modéliser ^^
Marsh Posté le 15-06-2007 à 15:12:11
Bonjour,
Je compte faire un site qui recense des recettes de cuisine avec un moteur de recherche en fonction des aliments et je me demande pour quelle solution opter pour la base de données (MySQL, et le site utilisera du PHP) entre les 2 suivantes :
- mettre la liste des ingrédient de la recette entière dans un champ text et ensuite pour rechercher par ingrédient on fais une recherche tout bête dedans.
ou bien
- faire une table ingrédients (id, nomIngrédient), une recette (id, texteRecette) et une table d'association Ingredient_Recette (idRecette, idIngrédient, quantité). Ainsi quand on fait une recherche sur un aliment on récupère son id et on cherche dans la table d'association toutes les recettes qui ont cet ingrédient.
La dernière solution me semble plus efficace mais la table Ingredient_Recette risque de contenir énormément d'enregistrements et je ne sais pas si ça peut poser problème, s'il y a une limitation. De plus cette solution est plus complexe à gérer pour la partie où on ajoute des recettes car il faudra rentrer les aliments séparement et séparer également quantité et aliment.
Donc voilà laquelle est mieux ? Si la 2eme est vraiment plus efficace vaut-elle le coup d'etre implémentée avec les difficultés qu'elle comporte ?
Merci de me répondre.