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


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

dans une utilisation courante, quand tu veux afficher une liste de messages dans un forum, tu connais déjà l'ID du topic. pas besoin d'avoir les groupes dans la table des posts.

mais si par exemple tu voulais afficher les dix derniers messages des topics auxquels à accès un joueur, tu fais un truc du genre
select * from topics where topics.category_id in (select id from categories where group_idin ( <ids des groupes de ton joueur> ))
select t.* from topics t inner join categories c on c.id = t.category_id where c.group_id in (<id(s) des groupes de ton joueur>)

(et tu rajoutes ton 'order by' sur les dates décroissantes + limit sur les 15 derniers par exemple)

Ces requêtes sont simples à lire, et ta base garde une atomicité lui permettant d'évoluer sans gêne dans n'importe quelle direction.

Bon je tape à l'arrache, ça fait un bail que j'ai pas touché à du SQL mais ça me semble correct. et honnêtement à part avoir besoin de grapiller quelques microsecondes, ça n'a pas besoin d'être optimisé : le coeur de ton appli c'est le gameplay, ce n'est pas le forum, et si un jour tu as tellement de joueurs que le forum explose tu te tourneras vers une solution complète genre punBB, myBB, phpBB, etc.

(d'ailleurs phpBB vieillit mal je trouve, un peu comme tous les trucs qui s'appellent myPHPmachin ou PHPmontruc)


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

(01-05-2011, 02:42 AM)niahoo a écrit : dans une utilisation courante, quand tu veux afficher une liste de messages dans un forum, tu connais déjà l'ID du topic. pas besoin d'avoir les groupes dans la table des posts.

oui j comprends bien ce que tu veut dire, mais comme il s'agit de plusieurs forums privés regroupés dans 3 même tables, si un joueur tente d'affiche -http://www.forum.com?topic=13 et que le topic 13 n’appartient pas à son groupe, ca craint, il faut tout de même vérifier l'appartenance du lecteur à tel ou tel groupe


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

(01-05-2011, 01:44 AM)Sephi-Chan a écrit : 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

Et pour le premier cas, c'est un problème de performance.
Et pour le second cas la base de données n'est pas prévu pour stocker les données de ce type, donc on voit comment le contourner Smile




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

(01-05-2011, 09:16 AM)php_addict a écrit :
(01-05-2011, 02:42 AM)niahoo a écrit : dans une utilisation courante, quand tu veux afficher une liste de messages dans un forum, tu connais déjà l'ID du topic. pas besoin d'avoir les groupes dans la table des posts.

oui j comprends bien ce que tu veut dire, mais comme il s'agit de plusieurs forums privés regroupés dans 3 même tables, si un joueur tente d'affiche -http://www.forum.com?topic=13 et que le topic 13 n’appartient pas à son groupe, ca craint, il faut tout de même vérifier l'appartenance du lecteur à tel ou tel groupe

Et donc, mettre le groupe_id dans les topics ou les posts te dispense d'une telle vérification ?


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

Bon c'a y est, avec vos conseils et quelques heures de boulot mon forum est en place, dans les grandes lignes bien entendu...il faut que je fasse une mini interface d'admin pour les gestionnaires de forum.

et chaque forum aura une catégorie publique, ses propres catégories privées, et des catégories partagées, mais vu la structure de mes tables ca va pas être très sorcier...

encore merci à vous trois, je ne comprends pas pourquoi j'envisageais hypothèses de faire des tables mal reliées entre elles...


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

salut à tous

faut que je vérifie tout un tas de truc mais le forum est en place mais j'ai juste une toute petite dernière question:

pour le système des "nouveaux messages" , vous savez...: afficher un icône quand le message à été lu ou non lu...à priori il y a deux façons de faire:

- enregistrer les messages lus dans une base de données
- utilisation de cookies avec l'heure de dernière connexion au forum puis à chaque sujet lut le stocker dans le cookie...

quelle est la meilleure façon de faire? la bdd c'est un peu lourd non ?
j'imagine qu'il faille stocker uniquement que les données lors de la connexion actuelle

ca doit être pourtant assez logique mais j'ai des doutes...

bon début de week end...


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

salut

je me permet de revenir sur ce sujet, peut être mon dernier message n'était pas assez précis.

voici ce que je compte faire:

- signaler dans le forum tout les messages non lus par un icone significatif
- la gestion des messages non lu se fera dans une table sql et non en cookie.

donc je me dit la chose suivante:

pour savoir quels messages n'ont pas été lus, il faut enregistrer dans une table les messages lus...

cela vous semble t il cohérent?


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

Oui. Mais selon la taille de ton forum, ça peut faire beaucoup d'informations, c'est pour ça qu'on admet parfois qu'un sujet est forcément lu si sa dernière activité date de plus de X jours. Smile

Tu peux utiliser une table de relation qui lie un utilisateur à un sujet et qui indique l'id du dernier message lu dans la discussion. Ainsi, quand un utilisateur affiche un sujet, tu mets à jour l'id du dernier message de la discussion.

De plus, ça rend tes pages impossible à mettre en cache puisque tout le monde a un état différent.


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

merci pour tes conseils...effectivement la taille de la table messages lu va vitre être enorme...il va falloir que je gère ca...


RE: Forum : structure de la base de données - Jeckel - 09-05-2011

Sous MySQL, si les index sont bon, une table avec peu de données par enregistrement ne pose pas de problèmes en général, tu peux atteindre plusieurs millions d'enregistrements sans soucis.