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

SQL Procédural MySQL Discussion :

Quel type de table choisir pour la création d'un forum


Sujet :

SQL Procédural MySQL

  1. #1
    Membre éclairé
    Inscrit en
    septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut Quel type de table choisir pour la création d'un forum
    Bonsoir,

    Cela a peut-être déjà été posé comme question, mais je me demandais quel type est le plus approprié entre innodb et myisam pour créer un forum ?

    myisam est bien pour la recherche en fulltext, tandis que innodb gère les clefs étrangère, et entre ces 2 là je ne sais pas trop pour lequel opter.

    Votre avis ?

  2. #2
    Membre émérite
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : mai 2002
    Messages : 1 213
    Points : 2 998
    Points
    2 998
    Par défaut
    Personnellement, j'utilise les deux.

    Voici mon modèle très simplifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     forum (id_forum, nom_forum,creation_forum,actif)
    topic(id_topic,id_titre_topic,id_forum,creation_topic,moderation)
    message(id_message,id_corps_message,id_topic,creation_message,id_corps_message,moderation)
    Aucun champ de chaînes de caractères ne faisait partie de ces messages. Cela permet d'avoir des tables InnoDb avec des enregistrements de longueurs fixes ce qui allège les index.

    Ensuite j'ajoute les tables MyISAM qui contiennent le texte et les index textuels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     titre_topic(id_titre_topic, titre_topic)
    corps_message(id_corps_message,corps_message)
    Enfin ces deux tables ne sont jamais purgées, même si j'effacais le message de la base de données, je le conserverais.

    A cela une vue est rajoutée et me fait automatiquement les jointures entre toutes ces tables pour faciliter le travail de développement un sens. Au passage cette vue me filtre les messages délestés depuis 15 jours et modérés.

    Voilà la solution que j'ai adoptée.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre éclairé
    Inscrit en
    septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Ton exemple, je le trouve vraiment pas mal, j'aurais jamais pensé à faire comme ça.

    Sur tes tables innodb, tu te sers de clefs étrangères ?

    Par contre, j'ai pas bien compris pour ce qui est des vues, j'en ai encore jamais fait, je vais regardé ça de plus près, merci

  4. #4
    Membre éclairé
    Inscrit en
    septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Une autre question, pour le titre d'un topic, varchar serait pas mal, cependant si l'on veut enregistrer les données déjà formaté pour l'affichage(afin d'économiser des ressources), 255 caractères n'est vraiment pas suffisant

    Exemple en enregistrant avec un htmlspecialchars en php, si quelqu'un entre un titre du genre 100 chevrons, le nombre de caractères va être multiplié par 4, donc 400 caractères, donc je vois pas d'autre solution que de définir le titre des topics en text

    Y'en a une autre ?

  5. #5
    Membre émérite
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : mai 2002
    Messages : 1 213
    Points : 2 998
    Points
    2 998
    Par défaut
    Citation Envoyé par Xunil
    Ton exemple, je le trouve vraiment pas mal, j'aurais jamais pensé à faire comme ça.
    Merci
    Citation Envoyé par Xunil
    Sur tes tables innodb, tu te sers de clefs étrangères ?
    Tout à fait.

    Citation Envoyé par Xunil
    Par contre, j'ai pas bien compris pour ce qui est des vues, j'en ai encore jamais fait, je vais regardé ça de plus près, merci
    Une vue permet en fait d'enregistrer une sélection et de travailler dessus comme si il s'agissait d'une table. Vous trouverez des informations pratiques sur les vues dans la documentations officielles :
    21. Vues
    21.1. Syntaxe ALTER VIEW
    21.2. Syntaxe de CREATE VIEW
    21.3. Syntaxe DROP VIEW
    21.4. Syntaxe SHOW CREATE VIEW

    Dans mon livre, je présente, au travers de l'exemple d'un arbre généalogique, le système des vues.

    Citation Envoyé par Xunil
    Une autre question, pour le titre d'un topic, varchar serait pas mal, cependant si l'on veut enregistrer les données déjà formaté pour l'affichage(afin d'économiser des ressources), 255 caractères n'est vraiment pas suffisant
    Selon moi c'est amplement suffisant.

    Citation Envoyé par Xunil
    Exemple en enregistrant avec un htmlspecialchars en php, si quelqu'un entre un titre du genre 100 chevrons, le nombre de caractères va être multiplié par 4, donc 400 caractères, donc je vois pas d'autre solution que de définir le titre des topics en text
    Non, vous commettez une erreur ! Il ne faut pas stocker dans la base les données au format html ! Surtout pas.

    Si vous gérez plusieurs langues stockez vos données au format utf-8. Ensuite juste avant de les afficher, vous utilisez les fonctions php pour les afficher dans le même encodage que votre page Web.

    (Au risque de vous renvoyez de nouveau sur mon livre, l'un des chapitres traite des formats de données et présente une méthode (tout en utf-8) qui règle tous ces problèmes très simplement, mais vous trouverez des articles qui présente certaines techniques en ligne.).
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  6. #6
    Membre éclairé
    Inscrit en
    septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Pourtant je vois souvent sur divers forum que beaucoup de personnes disent d'enregistrer les données formatées pour l'affichage, c'est pour cela que je voulais faire de même, mais si tu me dis que c'est une erreur, je vais faire comme tu me conseilles.

    J'ai reçu hier un livre que j'avais commandé(SQL de F. BROUARD & Christian SOUTOU de chez PEARSON), j'ai commencé à le lire, et j'ai pu constater que je suis complètement à la ramasse dans ce langage

    Pour ton livre tu peux me donner l'isbn, ou un lien, sur amazone, j'arrive pas à le trouver.

    Merci pour tes conseils.

  7. #7
    Membre émérite
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : mai 2002
    Messages : 1 213
    Points : 2 998
    Points
    2 998
    Par défaut
    Je possède moi-même le livre de F.Brouard de C.Soutou, je l'ai parcouru en diagonale seulement pour l'instant. Mais il ne déroge pas à la qualité habituelles de ses auteurs.

    Je te remercie de ta confiance. J'envoie cela en MP dès que j'ai la réponse, la mise en vente (aux libraires) commence mercredi. Il devrait être dans les bacs semaine 48 donc.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  8. #8
    Membre éclairé
    Inscrit en
    septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Ok, merci

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

Discussions similaires

  1. [MySQL] MySQL, quel type de champ choisir pour prix
    Par okoweb dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/08/2010, 00h12
  2. Quel type de table choisir
    Par Jasmine80 dans le forum Requêtes
    Réponses: 3
    Dernier message: 05/02/2009, 10h21
  3. quel type de donnée choisir pour simuler le type Currency
    Par maamar1979 dans le forum Débuter
    Réponses: 2
    Dernier message: 18/02/2007, 12h44
  4. Quel type de projet choisir pour incorporer directX9...
    Par Coderm@n dans le forum DirectX
    Réponses: 6
    Dernier message: 02/08/2004, 13h24

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