JeuWeb - Crée ton jeu par navigateur
Forum : structure de la base de données - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Forum : structure de la base de données (/showthread.php?tid=5393)

Pages : 1 2 3


Forum : structure de la base de données - php_addict - 30-04-2011

bonjour

je suis en train de mettre en place mon forum interne, ce sera un forum assez léger.


je me permet de vous demander ce que vous pensez de cette structure mysql:

forum_cat --> les catégories du forum
forum_topic --> les topics classés par catégories
forum_msg --> les messages associés aux topics

[Image: forumvg.jpg]

et je me permet une question supplémentaire:

mes joueurs peuvent se regrouper par groupements de joueur

quand je dis forum, en fait je vais faire un forum par groupement de joueur, ce qui en quelque sorte donne des dixaines de mini forums.

pour le groupe_id = 1 par exemple:

- dois-je ajouter une colonne groupe_id dans chacune des tables ce qui alourdit la bdd et n'a pas un très grand intérêt structurel mais va me simplifier la vie pour les requêtes SELECT

- ou d’ajouter une colonne groupe_id uniquement dans la table forum_cat, dans ce cas la structure est bien pensée mais mes requêtes vont être des jointures pas toujours judicieuses ou des requêtes imbriquées

que pensez vous de tout ceci svp?

grosso modo j'ai le choix entre:

- une structure légère et fortement relationnelle mais des requêtes SELECT qui vont me pourrir la vie
- une structure un peu mal fichue mais mes requêtes SELECT vont être très faciles et rapides (mieux vaut peut être vu qu'il s'agit de dizaines de mini forums regroupés dans 3 tables sql...)

merci d'avoir lu ceci jusque ici bonne journée à tous !


RE: forum , structure base de donnée - srm - 30-04-2011

Choix 1


RE: forum , structure base de donnée - php_addict - 30-04-2011

(30-04-2011, 05:10 PM)oxman a écrit : Choix 1

:haha: j'étais certain que tu allais répondre un truc du genre, mais j'aurais du dans mon message demander pourquoi tel ou tel choix...


RE: forum , structure base de donnée - Sephi-Chan - 30-04-2011

Moi ce qui me choque déjà dans ce schema c'est : le mélange des langues (c'est si difficile de n'en utiliser qu'une ?), les abréviations dans les noms de table/colonne (on t'arrache un ongle par caractère utilisé ?).

Ensuite, pour être sûr de bien comprendre ton arborescence, j'aimerais savoir si le forum de chaque groupe a ses propres catégories (qui ont chacune leurs discussions) ou bien les catégories sont génériques au forum de chaque groupe ?


RE: Forum : structure de la base de données - srm - 30-04-2011

Parce que maintenant on doit argumenter pour expliquer pourquoi il faut utiliser un MCD dans les règles de l'art ?
Lit plutôt des bouquins à ce sujet Smile


RE: forum , structure base de donnée - niahoo - 30-04-2011

choix 1 de quelle liste oxman ? il présente deux fois ses solutions et pas dans le même ordre.

perso je préfère des bases qui respectent les formes normales. Si c'est les forum_cat qui sont liées aux groupes de joueurs alors il faut que l'id du groupe apparaisse uniquement dans cette table.

je ne vois pas que intérêt tu as de mettre le groupe_id dans la table des posts par exemple, puisque tu récupère les posts par id de topic.

Il ne faut pas avoir peur de faire plusieurs requêtes pour une première implémentation. tu auras tout le temps ensuite de te casser la tête à faire des jointures de ouf pendant une phase d'optimisation, mais je suis partisan de faire une phase avec implémentation simple qui permet de tester et d'utiliser la fonctionnalité.

et php/mysql encaissent bien de nombreuses requêtes. Quand je vois comment prestashop fonctionne avec le nombre de requêtes passées pour afficher une simple page d'un produit et que mon serveur de prod fait ça en une fraction de seconde, ça me rassure sur la performance php/mysql.

Et pourtant je trouve prestashop assez mal fichu (voire carrément chiant des fois). Mais ça c'est la logique POO qui veut que chaque élément chargé tire ses données de la BDD tout seul comme un grand.


RE: Forum : structure de la base de données - Sephi-Chan - 30-04-2011

Oxman, l'approche Merise et la normalisation des bases de données n'est pas toujours la meilleure. Même si dans le cas présent, je pense que ça l'est, dénormaliser sa base est parfois bénéfique. Donc il n'est jamais inutile de préciser le pourquoi du comment.



RE: Forum : structure de la base de données - srm - 30-04-2011

Ah bon ?
Le seul cas que je connaisse ou c'est pas la meilleure, c'est quand tu commences à avoir des problèmes de performance.
Et d'après ce que je sais on en est pas là.

Si par contre tu peux me citer d'autres cas ou ça n'est pas la meilleure, je suis prenneur Smile


RE: Forum : structure de la base de données - Sephi-Chan - 01-05-2011

Il y a effectivement la performances, mais également la commodité d'utilisation.
Certains utilisent MySQL pour faire du stockage par clé/valeur (cf. Turn MySQL into blazing fast NoSQL).
Après, tu as même des gens qui utilisent le modèle Entity-Attribute-Value pour stocker des informations peu structurées (cf. How FriendFeed uses MySQL to store schema-less data).

Comme quoi les outils de stockage peuvent parfois aller plus loin que leur utilisation traditionnelle ! Smile


RE: Forum : structure de la base de données - php_addict - 01-05-2011

(30-04-2011, 05:41 PM)Sephi-Chan a écrit : Moi ce qui me choque déjà dans ce schema c'est : le mélange des langues (c'est si difficile de n'en utiliser qu'une ?), les abréviations dans les noms de table/colonne (on t'arrache un ongle par caractère utilisé ?).

oui je comprends ce que tu veut dire, mais si c'est clair pour moi c'est deja pas mal, et en plus tu sembles avoir compris la signification de ce franglais, donc c'est pas si terrible

(30-04-2011, 05:41 PM)Sephi-Chan a écrit : Ensuite, pour être sûr de bien comprendre ton arborescence, j'aimerais savoir si le forum de chaque groupe a ses propres catégories (qui ont chacune leurs discussions) ou bien les catégories sont génériques au forum de chaque groupe ?

oui un forum par groupe de joueur, et chaque groupe possède ses propres catégories qui sont inaccessibles aux autres groupes. (j'inclurais plus tard la possibilité qu'une catégorie d'un groupe precis puisse etre accessible par d'autres groupes distincts)

(30-04-2011, 05:57 PM)oxman a écrit : Parce que maintenant on doit argumenter pour expliquer pourquoi il faut utiliser un MCD dans les règles de l'art ?
Lit plutôt des bouquins à ce sujet Smile

vu sous cet angle je comprends mieux ta première réponse

(30-04-2011, 05:57 PM)niahoo a écrit : je ne vois pas que intérêt tu as de mettre le groupe_id dans la table des posts par exemple, puisque tu récupère les posts par id de topic.

bein là est toutes l'essence de ma question en fait: si je veut récupérer tout les topics de la table forum_topic, faut que j'aille chercher l'id du groupe dans la tables forum_cat.

et en ne mettant que l'id du groupe dans forum_cat, elle vont avoir quelle tronche mes requêtes pour récupérer tout les messages du topic #32 de la catégorie #89 appartenant au groupe #65 ? jointure INNER ? requêtes imbriquées?

je vois bien la logique d'une structure MCD, c'est clean, structuré, mais va me faire des requêtes SELECT plus compliquées que ce qu'elles pourraient être


Ayant plus d’expérience que moi sur ces sujets, je vais suivre vos conseils même si pour le moment j'y vois de mes yeux de novice un intérêt tout relatif

merci d'avoir pris de votre temps pour me répondre