Version complète: sur le forum Webmaster Hub : Idée de structures...
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
sarc
Bonjour !

Je souhaite répertorier dans ma base de données les fruits et légumes de mes chers membres. Je sais qu'ils auront poires, pommes, bananes, raisins, fraises et framboises.
J'ai une table

CITATION
TABLE FRUITS
id, nom
1. poire
2. pomme
3. banane
etc


J'hésite entre :

CITATION
TABLE POSSESSION
membre, fruit, quantité
1 - 1 - 5
1 - 3 - 2


Ou alors
CITATION
TABLE POSSESSION
membre, 1, 2, 3
1 - 5 - 0 - 2


ou encore
CITATION
TABLE POSSESSION
membre, possession
1 - 5,0,2


La première idée semble plus propre (les noms de colonnes sont bien déterminés), mais la deuxième est bieeeen plus facile à relire (avec une seule ligne, on a directement toutes les posessions de notre cher membre), et la troisième est un mélange des deux (plus facile à lire, mais pour extraire il faut faire un explode...).
Votre avis sur la question ?

Merci d'avance wink.gif
Anonymus
La première, sans hésiter.
Pourquoi ? Parce que tu remplaces 'fruit' par 'bien' et tu rajoutes 'type'.
Ca donne :
TABLE POSSESSION
membre, type, bien, quantité
1 - 1 - 1 - 5
1 - 1 - 3 -2
par exemple.
Avec le 'type' = '1' lorsque c'est un fruit. Ainsi, tu peux gérer aussi bien des fruits que des légumes, des voitures, des crayons bic, etc.. wink.gif
sarc
Merci de ta réponse !

En fait, c'est ce que j'ai utilisé jusqu'à maintenant, mais ce type de structure est bien plus ch*** à gérer...
En effet, si on veut lui ajouter un bien, il faut :
1. Vérifier que ce bien n'est pas dans la base de donnée
2. S'il n'y est pas, le créer
3. S'il y est déjà, le mettre à jour

Et si un jour on arrive à 0 d'un bien, on voudra faire le ménage dans la base de donnée, et dans ce cas l'effacer.
L'avantage des autres méthodes, c'est qu'on n'a qu'une seule ligne par membre, et donc une mise à jour beaucoup plus aisée, en une seule fois, sans aucune vérification (s'il achète 2 bananes, 3 pommes d'un coup, on va pas avoir besoin de faire deux vérifications, ni deux mises à jour... Avec une mise à jour, on a déjà le compte !)

Avec la première méthode, il suffit d'un bug pour se retrouver avec un doublon impossible à gérer en plus (je le sais, j'en ai déjà eu... Mais pour trouver où la vérification n'était pas faite, c'était une autre paire de manche).
Bref, même si tu me confortes dans ma première idée, je suis pas totalement convaincu du bien-fondé de la chose tongue.gif
pluriels
La première méthode est la plus conventionnelle mais surtout la plus efficace.

Pour éviter les doublons : tu peux créer un index sans doublons sur les colonnes membre et fruit

TABLE POSSESSION
membre, fruit, quantité
1 - 1 - 5
1 - 3 - 2

De cette manière si tu tentes l'insertion :
1 -3 - 4, la BDD t'empêchera de le faire.


CODE
// insertion du bien
mysql_query("INSERT INTO POSSESSION ...");
// si l'insertion n'a pas été effectuée et que l'erreur correspond à un problème d'unicité de la clé (j'ai mis le code 1083 au hasard)
if(mysql_errno($connexion)==1083){
  mysql_query("UPDATE POSSESSION ...");
}
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.