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

Requêtes MySQL Discussion :

Création d'un forum de discussion tout simple


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club Avatar de Tigrounette
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 69
    Points
    69
    Par défaut Création d'un forum de discussion tout simple
    Bonjour a tous,

    j'essaye de créer un petit forum relativement simple en MySQL + Java (style vBulletin, phpBB, etc). Le problème c'est que je débute et que j'ai envis de faire ça bien dans les règles. J'aimerais donc vos avis et conseils sur plusieurs points.

    Pour la structure de ma base de donnée je compte créer deux "type" de table. Des tables représentant mes sections de forum ayant pour enregistrements des liens vers un certain nombre d'autres tables représentant mes sujets de discussion ayant pour enregistrement la liste de message du sujet en question.

    Par exemple :

    forum_cuisine
    -- sujet_forum_cuisine_1 (nom du sujet, titre, auteur, date, etc.)
    -- sujet_forum_cuisine_2

    sujet_forum_cuisine_1
    -- Message 1 (auteur, message, date, etc.)
    -- Message 2
    -- Message 3
    -- etc...

    sujet_forum_cuisine_1
    -- Message 1
    -- Message 2
    -- Message 3
    -- etc...

    Finalement, je crée une table pour chaque forum et pour chaque sujet, en renseignant chaque forum sur les sujets qu'il contient. Donc la majeur partie des recherche dans ma base de donnée se feront sur le nom des tables, pour trouver les sujets de chaque forum. Est-ce que c'est une "bonne" façon de faire ? ou ya t'il une manière plus performante (plus rapide) ?

    Si oui, j'ai un petit problème. Lorsqu'on répond à un sujet de n'importe quel forum celui ci se retrouve "tout en haut" de manière à ce que les sujets soient classés par ordre de date de modification. Là je sais pas trop comment faire, est il possible de "remonter" un enregistrement dans une table pour le mettre en premiere position ? j'ai cherché un peu mais j'ai pas l'impression que ça soit possible.

    Je crois qu'il faudrait comparer les dates de modification de chaque sujets pour sortir les plus récents mais j'ai l'impression que c'est une opération assez lourde. Savez vous comment procède les forum d'aujourd'hui ? là je bloque car il me faut quelque chose qui consomme le moins de ressource possible.

    Merci d'avance

  2. #2
    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
    Salut,

    Oui, il faut une table pour les forums, une pour les sujets et une autre pour les message.

    Perso je te conseille pas trop de mettre le 1er message du topic créé dans la table des sujets.

    Pour l'ordre d'affichage, un simple ORDER BY suffira, il ne faut jamais touché aux clefs de tes tables.

    Mais ce que tu as mis comme structure n'est pas assez approfondi, il manque beaucoup de choses.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 71
    Points
    71
    Par défaut
    Je n'ai jamais fait de forums, mais je ne pense pas que ce que tu veuilles faire soit la bonne solution.

    L'idéal est d'avoir une table forum (id_forum, nom_forum,...), une table sujets (id_sujet, nom_sujet, id_forum, id_utilisateur, date...), une table posts (id_post, id_sujet, id_utilisateur, date....), et ta table des utilisateurs (id_utilisateur, mot_passe...).

    Tu réccupére ensuite le contenu d'une conversation avec les jointures.

    Exemple pour tous les messages d'un sujet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM posts p 
    LEFT JOIN utilisateurs u ON (p.id_utilisateur = u.id_utilisateur) 
    WHERE p.id_sujet = X 
    ORDER BY p.date
    J'ai certainement oublier certaines choses, mais ca me semble déjà la base minimale pour un forum même léger.

  4. #4
    Membre du Club Avatar de Tigrounette
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 69
    Points
    69
    Par défaut
    Ok j'y vois plus clair merci

    Donc en fait, il vaut mieux réduire le nombre de table pour concentrer les enregistrements et utiliser des jointure, plutôt que de créer un nombre important de table avec un nombre limité d'enregistrement, même si ca évite d'utiliser des jointure ? (d'un point de vue purement vitesse de traitement)

    (Je débute et les jointure j'ai pas confiance en fait, mais je me trompe surement ^^)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/09/2012, 18h58
  2. un algo tout simple de randomisation (enfin, j'espere)
    Par orichimaru dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 30/11/2004, 22h15
  3. [langage] Problème tout simple
    Par marouanitos dans le forum Langage
    Réponses: 5
    Dernier message: 24/09/2003, 11h25

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