Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 27/11/2011, 08h51   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 3
Points : 0
Points : 0
Par défaut Mysql et savoir faire (la facon propre?)

Bonjour,

Je vais faire un site qui subira des évolutions.
Dans ma base j'ai mes membres inscrit "Nom, Prénom, etc.."

Cette liste d’éléments va fortement augmenter dans le futur. (adresse, etc..)
Je ne souhaite pas pour autant modifier mes scripts php dans leurs actions d’écriture dans la base.

Alors ma questions est simple:
Comment je dois m'y prendre pour que ce soit le plus propre/stable/securité possible?

une colone par variable ? une chaine avec un caractère * entre chaque variable à exploser ?

Merci pour votre lumière.

PS: Je me fait peut etre une fausse idée, les actions PHP peuvent etre ecrites 1 fois pour toute, de facon à agir meme si le tableau a de nouvelles colonnes.

Merci encore pour votre lumière.
japower01 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 30/11/2011, 14h48   #2
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
Bonjour,
À mon avis, quand le modèle de base de données change, le code PHP ou les requêtes SQL de sélection doivent également changer. Ce n'est pas possible d'avoir du changement dans la base sans qu'il n'y ait le moindre impact sur le code PHP, même en utilisant quelque chose comme une étoile séparant les champs dans un seul énorme bloc de texte. Je déconseille d'ailleurs fortement d'utiliser cette solution. Imaginons que le 8 ème élément de votre champ de texte (celui après la 7 ème étoile) devienne un critère de recherche dans votre application : les performances seront absolument horrible car il sera nécessaire de faire une requête avec une directive LIKE %XXX%, ce qui est tout sauf optimal.

Quant à savoir si il est préférable de faire des tables horizontales (une colonne par information) ou verticales (une ligne par information contenant deux colonnes, l'une indiquant le type de l'information, par exemple "nom" et une seconde colonne pour la valeur, par exemple "Toto"), ce débat reste ouvert et dépend de votre application.

Il faut savoir qu'une table verticale sera pratiquement toujours moins performante qu'une table horizontale. Les requêtes complexes seront également plus difficiles à écrire. Par contre, le gros avantage de la table verticale sera de pouvoir ajouter aisément des éléments, tant que l'information ajoutée ne doit pas donner lieu à des recherches ou jointures complexes.

Personnellement, j'utilise des tables horizontales. J'utilise également un outil pour générer un modèle de classe à partir de la structure de la base de donnés pour manipuler les objets (CRUD).

Je ne prétends pas avoir LA solution et si d'autres ont envie de donner leur avis, je serai également intéressé

Salutations,
Patrick
__________________
Always code as if the guy maintaining your application is a violent psychopath!
Site personnel sur la saga Final Fantasy : http://www.final-fantasy.ch
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h53   #3
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Salut,
personnellement je dirais que ça dépend de l'application car générer des requêtes SQL dynamiques depuis une liste de champs n'est pas un problème (même si ça en génère un qui est celui de la sécurité). Cela implique de stocker quelque part ta liste de champs/tables puis de coder des requêtes génériques depuis ce tableau. Ensuite seule la modification du tableau est nécessaire pour changer le comportement de l'appli.

Mais le problème se pose plutôt pour l'affichage et la génération de formulaires pour l'insert et l'update. Il est assez difficile d'être générique à ce niveau, notamment dans la mise en page et surtout dans le choix des composants HTML (input, textarea, select, etc.). Bien que cela doit être possible en récupérant les types des colonnes depuis une requête SQL, le plus simple serait de bien dissocier tes données de leur affichage (du pseudo MVC )

Comme Patrick, je pense qu'il faut bannir le stockage de plusieurs informations dans un même champ et respecter l'atomicité des données, notamment du fait que de bonnes performances passent généralement par la création d'index sur les différentes colonnes d'une table pouvant apparaître dans les clauses where.
__________________
Vive les roues en pierre
Djakisback 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 07h43.


 
 
 
 
Partenaires

Hébergement Web