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 :

Quelle structure choisir pour commentaires des articles [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut Quelle structure choisir pour commentaires des articles
    Bonjour,

    Quelle structure devrait-je choisir pour ceci : articles avec commentaires en bas sachant que pour l'instant j'ai une table « articles » où chaque row contient un article.

    Là où j'hésite c'est :

    * fais-je une seule table « commentaires » contenant tous les commentaires du site où chaque commentaire a son « id_parent » ayant l'« id » de l'article sur lequel il est posté

    ou

    * grouperais-je les commentaires de chaque article par tables, ainsi tous les commentaires appartenant a un article vont dans une table précise.

    Ce que je recherche est la performance, quel choix est le meilleur si j'ai 3000 posts (articles) avec 10000 commentaires.

    D'après-moi, lorsque l'on fera une requête pour afficher un article, avec la première méthode, quand on demandera d'afficher les commentaires ayant l'« id_parent » du post en question, la requête sera nettement plus longue que le simple affichage de la deuxième méthode où les commentaires sont classés par tables car la table en question contiendra les 10000 commentaires et que mysql devra rechercher lesquels correspondent à l'id de l'article pour les afficher.

    Pourquoi j'hésite ? Déjà, avec la deuxième méthode, on aura 3000 tables contenant les réponses des 3000 articles, je ne sait pas ce que fera phpmyadmin quand il devra afficher autant de tables.

    J'ai également remarqué que phpBB avait les messages dans une seule table.

    Si vous avez des explications ou des conseils je suis preneur, merci.

  2. #2
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    La première méthode évidement.

    Il te suffit d'indexer "id_parent" pour que MySQL sache où aller sans avoir réellement à faire de tri.
    Avoir 3000 tables serais vraiment plus lourd et plus chian à maintenir (Vérifier si la table existe quand quelqu'un poste un commentaire, effacer la table si l'article est effacé, etc...)

  3. #3
    Membre expérimenté 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 : 63
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Oublis l'idée des 3000 tables !!
    Tu les gérerais comment tes 3000 tables ?? !!
    Comme le dis |PaRa-BoL si tu index l'id, pour MySQL c'est de la rigolade 10 000 enregistrement. Essaye de faire des test avec même 100 000 et tu verras.

    Ta question est vraiment une question de bases sur l'analyse de BD. Je te conseil de lire une peu à ce sujet, cette fois tu t'es posé la bonne question, mais la prochaine fois tu peux faire de grosses erreurs sans t'en rendre compte. Enfin, c'est un conseil

  4. #4
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Merci bien je vais avec la première méthode

    Quant à ceci :

    Il te suffit d'indexer "id_parent" pour que MySQL sache où aller sans avoir réellement à faire de tri.
    Avez-vous un lien ou une explication pour ceci ? Merci.

  5. #5
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Petit exemple de création de table avec clef primaire + clef indexée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     CREATE TABLE `ma_bdd`.`ma_table` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `id_parent` INT NOT NULL ,
    INDEX ( `id_parent` )
    ) ENGINE = MYISAM
    Dans phpMyAdmin il te suffit de sélectionner l'icône avec le petit éclair le champ que tu veux indexer

  6. #6
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Un grand merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/12/2011, 14h26
  2. Réponses: 4
    Dernier message: 05/06/2005, 14h05
  3. [Strategie]arborescence : quelle structure choisir ?
    Par iubito dans le forum Général Java
    Réponses: 12
    Dernier message: 20/09/2004, 14h46
  4. Quelle licence choisir pour cette application ?
    Par krusaf dans le forum Licences
    Réponses: 6
    Dernier message: 08/07/2004, 20h20

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