Aller au contenu

Idée de structures...


Sujets conseillés

Posté

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

TABLE FRUITS

id, nom

1. poire

2. pomme

3. banane

etc

J'hésite entre :

TABLE POSSESSION

membre, fruit, quantité

1 - 1 - 5

1 - 3 - 2

Ou alors

TABLE POSSESSION

membre, 1, 2, 3

1 - 5 - 0 - 2

ou encore

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 ;)

Posté

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.. ;)

Posté

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 :P

Posté (modifié)

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.

// 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 ...");
}

Modifié par pluriels

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...