IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Découpage de table


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Par défaut Découpage de table
    Bonsoir, je suis actuellement en charge de programmer un site de rencontre.
    Du fait que c'est mon premier site (j'ai fais du C++ avant mais bon, c'est un autre domaine), j'ai des questions qui restent sans réponse et surtout une.

    Qui dit site de rencontre, dit profil utilisateur. Le fait est que le profil d'un membre se décompose en environ 50 données, réparties en 7 sections. J'avais pensé à deux méthodes:

    - Soit tout stocker dans une table.
    - Soit découper en 7 tables et en assurant la relation via les index.

    Quel est la meilleure approche ?

    Merci d'avance pour le temps que vous prendrez à me répondre.

  2. #2
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Si les données sont toutes uniques pour chaque utilisateur , autant créer qu'une seule table

  3. #3
    mon_nom_est_personne
    Invité(e)
    Par défaut
    je pense pas que mettre des profile en base de donnée est une super idée.
    La raison: imagine a chaque fois qu'une personne va faire une recherche, afficher un profil, editer son profile, tu auras une connection a la base de donnee. Multiplier par le nombre de visiteur, t'as base de donnée va sauté en moins de deux. je pense que tu as tout interer a sauvegarder les profiles dans des fchier xml ou autre. A la limite la bdd tu t'en sert comme backup des profiles.

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Par défaut
    Bonjour et merci pour vos réponses très instructives!

    Je n'avais pas du tout pensé au XML et je pense que cette solution est en effet la meilleure approche qu'on pourrait avoir.

    Merci encore à vous deux, sujet résolu

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Par défaut
    Désolé du double poste, mais j'évite d'ouvrir un nouveau thread pour cette question.

    J'ai donc reflechis à l'utilisation de XML, et j'ai une petite question: cela ne va pas être couteux lors d'une recherche ?

    Je veux dire, à chaques recherche, il faudra que j'ouvre un fichier xml, le parcours. Et ceux, pour chaque profils sur le site. C'est pas extremement couteux ?

  6. #6
    mon_nom_est_personne
    Invité(e)
    Par défaut
    c'est la que l'astuce opere
    tu as deux approchent. soi un arborescence de dossier (homme||femme /ville etc..) mais le probleme c'est que ta hiarchisation ne sera peut-etre pas la meme qu'un utilisateur lambda.
    Apres tu as une aproch que j'appelle "l'approche secu". L'idee est d'utiliser une nomenclature de nom de fichier comme le numero de secu.
    par example :

    un homme sur paris brun sera 1 01 br.xml
    une femme blonde de lille sera 2 10 bl.xml

    (les espace c'est pour montre la segmentation)

    donc, avec cette technique tu peux autant chercher des personnes precises que des chose vage.

    par example :

    n'importe qui sur paris sera [12]01[brbl].xml en regex

    donc apres l'astuce est de faire un petit linux find avec ta regexp
    find /dossier/ou/sont/mes/profiles/ -name find . -name 'regexp.xml'

    dans notre cas la commande sera donc :
    find /dossier/ou/sont/mes/profiles/ -name find . -name '[12]01[brbl]\.xml'

    Le truc cool c'est qu'en plus avec une commande system ou autre, tu aura un array avec les resultats, ca facilite le fetch.

  7. #7
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Citation Envoyé par mon_nom_est_personne Voir le message
    je pense pas que mettre des profile en base de donnée est une super idée.
    La raison: imagine a chaque fois qu'une personne va faire une recherche, afficher un profil, editer son profile, tu auras une connection a la base de donnee. Multiplier par le nombre de visiteur, t'as base de donnée va sauté en moins de deux.
    J'aimerais bien avoir une démonstration de ce que annonce
    As ton avis le traitement par php de x fichiers XML est plus rapide qu'un SELECT bien fait ? Je demande à voir. A toi de me convaincre

  8. #8
    mon_nom_est_personne
    Invité(e)
    Par défaut
    le probleme viens pas rellement au niveau de php mais au niveau de mysql
    Prend une table de 10000 entrees, fait 1000 requetes en meme temps qui selectionne plein de champ avec des wheres et des order et regarde le load de ton server.
    Apres xml etait un exemple, il y a d'autre solution comme convertir les donnee en binaire et faire des fseek etc.. apres c'est la magie de l'experience.

  9. #9
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Citation Envoyé par mon_nom_est_personne Voir le message
    Prend une table de 10000 entrees, fait 1000 requetes en meme temps qui selectionne plein de champ avec des wheres et des order et regarde le load de ton server.
    Apres xml etait un exemple, il y a d'autre solution comme convertir les donnee en binaire et faire des fseek etc.. apres c'est la magie de l'experience.
    Je ne doute pas que ton expérience t'ai amenée a être confronté à ce type de questions et que tu ais trouvé tes solutions.

    Mais peut être que LyX60 devrait porter son attention sur la qualité de ses requêtes et la structure de sa base afin d'en optimiser le fonctionnement, plutôt que de mettre en place des solutions qui risque d'être lourdes ?

    Je pose la question, je n'affirme rien

  10. #10
    mon_nom_est_personne
    Invité(e)
    Par défaut
    ca c'est sur, apres faut voir le tout, taille du projet, complexiter de ce dernier etc... Et ne t'en fait pas, je sais que dans 99% des cas, une sql bien ficelee ou une stored procedure font largement l'affaire.

  11. #11
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut !

    Perso j'opterais pour une base de données plutôt que des fichiers XML, et ce pour plusieurs raisons...

    • Les bases MySQL peuvent tout à fait gérer des tables avec des milliers voir des millions d'entrées.
    • Si l'on s'aperçoit dans un an qu'il manque un champ et qu'on souhaite ajouter une nouvelle info au profil des membres (exemple : sport pratiqué), alors il faudra reprendre tous les fichiers xml. Avec une base de données il suffira de rajouter un nouveau champ dans la table correspondante.
    • Il sera beaucoup plus facile d'effectuer une recherche multi-critères sans se limiter à quelques champs, et si la structure de la base est bien faite (clés étrangères, index pour les recherches), alors les requêtes seront rapides
    • Enfin, il est tout a fait possible d'utiliser un système de cache qui limitera grandement le nombre de requêtes.

    Voilà qq arguments en faveur des BDD ...
    C'est vrai que les fichiers xml sont très pratiques dans certains cas : échange de données, flux rss, fichiers de config, etc. Une base est faite pour stockées de données de manière structurée et cohérente, ce qui à mon avis est beaucoup plus simple d'utilisation. Mais ca ne reste qu'un avis parmi tant d'autre...

    A++

Discussions similaires

  1. Importer un fichier excel dans access avec découpage en tables
    Par taz_wanted dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/05/2011, 09h46
  2. [MySQL] Découpage d'une table en plusieurs tables
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/12/2008, 18h07
  3. performance: index ou découpage de table
    Par IsHappy dans le forum Approche théorique du décisionnel
    Réponses: 3
    Dernier message: 30/04/2008, 08h51
  4. Découpage chaine et Insertion dans table
    Par star dans le forum SQL
    Réponses: 1
    Dernier message: 09/04/2008, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo