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)
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)