Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/04/2007, 18h10   #1
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 101
Points : 19
Points : 19
Par défaut [Conception] Votre avis sur une méthode

Bonjour
J'utilise une méthode que je n'ai pas vu ailleurs, donc je me demande si je fais bien...
J'ai un champ mysql qui doit contenir plusieurs données, que je dois manipuler (ajouter, insérer, supprimer etc)
Après m'être pris la tête sur la façon de m'y prendre, j'ai décidé de séparer chaque donnée avec un caractère spécial (genre le | ou la , ), de récupérer cette chaîne de caractère, et de la tranformer en tableau avec explode.
Après je peux bidouiller ce tableau, le retranformer avec implode, et réécrire le champ mysql.

Mais ça me semble un peu bidouille comme méthode.
Y'a t'il pas mieux à faire?

Merci
AIexis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 19h08   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Suivant la nature des données et du format dans lequel elles sont stockées vous pourrez simplifier votre code en utilisant directement dans les requêtes les fonctions MySQL.

Si c'est une relation *,n => *,n, vous ne pouvez pas gérer cela avec une nouvelle table ?

Vous devriez lire cette discussion.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 19h23   #3
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 101
Points : 19
Points : 19
Je ne connais pas bien les fonctions "avancées" de mysql, il faudra que je m'y penche. D'ailleurs la discussion citée m'aide bien, merci

La plupart des cas, il s'agit de série de nombres (index): 125,853,1621,184 etc...
Je vois pas très bien en quoi une nouvelle table peut m'aider
AIexis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 19h43   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par AIexis
Je ne connais pas bien les fonctions "avancées" de mysql, il faudra que je m'y penche.
http://dev.mysql.com/doc/refman/5.0/fr/functions.html à bookmarker

Citation:
Envoyé par AIexis
Je vois pas très bien en quoi une nouvelle table peut m'aider
C'est la réponse que vous donnerait un travail de modélisation (Modèle E/A)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2007, 00h28   #5
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Citation:
Envoyé par AIexis
La plupart des cas, il s'agit de série de nombres (index): 125,853,1621,184 etc...
Je vois pas très bien en quoi une nouvelle table peut m'aider
Si ces index sont des références sur une autre table, ta relation est ce qu'on appelle généralement une relation N-N : Chaque "A" possède N éléments "B", et chacun de ces éléments "B" peut être utilisé dans plusieurs "A". On utilise alors une table de jointure
Je suis sur que tu trouveras des tonnes d'articles passionnant à ce sujet, notamment dans la partie SQL de développez.com
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 17h44   #6
Membre éclairé
 
Inscription : juillet 2003
Messages : 338
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 338
Points : 339
Points : 339
Je souscrit aux précédents, si tu as plusieurs données dans un champs, c'est peut être un problème de conception. La méthodologie qui peut te permettre d'y voir plus clair passe par un MCD. Y'a quelques cours de Merise (la méthode) qui peut bien aider...
tatareau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 17h51   #7
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 101
Points : 19
Points : 19
Est-il donc si inhabituel qu'un champ contienne plusieurs valeurs?

Merise... faut pas m'en parler, j'en fais encore des cauchemars

Merci à tous d'avoir pris le temps de répondre... je crois que j'aurai pas le courage de chercher à faire mieux que ce que j'ai fais, puisque vos solutions me semblent vraiment trop compliqué pour ma 'tit tête
AIexis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 18h08   #8
Membre éclairé
 
Inscription : juillet 2003
Messages : 338
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 338
Points : 339
Points : 339
Désolé pour le cauchemar
Pour des problèmes simples on peut quand même se passer de MCD.
Mais c'est vrai, tu peux faire un traitement de chaine avec séparateur (du csv en fait), mais tu demandais une méthode plus rigoureuse?
En fait il faut te poser des questions comme si le nombre d'index est constant (le nombre de chiffre dans une cellule), si leurs ordre à de l'importance, s'il doit exister des valeurs NULL d'index, si cela sera toujours des nombres... C'est la nature même de la donnée (ta suite de chiffre) qui va orienter ton schéma de base et aussi la relation que ces données entretiennent avec les autres tables.
Par exemple si ces listes doivent être unique ou au contraire identiques, s'il existe plusieurs listes d'index pour une donnée de table externe...
Peut être cette fois code comme tu veux, mais la démarche de reflexion en amont du codage est vraiment importante sinon la plus importante.
Bon code
tatareau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h32.


 
 
 
 
Partenaires

Hébergement Web