[MySQL] Dans ce forum , Joce a crée...

Dans ce forum , Joce a crée... [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 11-12-2002 à 22:32:58    

1 ou 2 tables pour les messages ??
 
c.a.d une table message avec titre et une avec les reponses
 
ou bien 1 seule table avec tt les messages et un champ 'title' qui peux etre NULL
 
En fait , je suis en train de creer un forum similaire en plus light , j'ai reussi a travailler avec une seule table , mais un probleme se pose pour le tri des messages par date de la derniere reponse...
 
si vous pouvez m'eclairer  :jap:  
 
voila ma structure de table :
 

CREATE TABLE message (
  msg_id int(11) NOT NULL default '0',
  num_reponse int(11) NOT NULL auto_increment,
  user_id int(11) NOT NULL default '0',
  message_title varchar(80) default NULL,
  message longtext NOT NULL,
  date datetime NOT NULL default '0000-00-00 00:00:00',
  vue int(4) NOT NULL default '0',
  smiley int(1) NOT NULL default '0',
  cat_id int(2) NOT NULL default '0',
  PRIMARY KEY  (num_reponse),
  KEY user_id (user_id),
  KEY msg_id (msg_id)
) TYPE=MyISAM;


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 11-12-2002 à 22:32:58   

Reply

Marsh Posté le 11-12-2002 à 22:42:47    

Il me semble qu'il a une table "topics" et une table "messages", enfin il est mieux placé que moi pour le dire :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-12-2002 à 15:43:17    

antp a écrit :

Il me semble qu'il a une table "topics" et une table "messages", enfin il est mieux placé que moi pour le dire :D

il veux rien dire sur son modèle de données, il garde tout pour lui :/


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 12-12-2002 à 15:48:06    

:hello:  
 
Salut, pour mon forum, j'ai mis deux tables, une pour les messages (avec titre et données du message) et une autre pour les réponses.
 
Il me semble que c'est une bonne solution comme j'ai fait, je n'ai aucun problème. Je te conseil de faire comme ça, il me semble que c'est plus simple et mieux ordonné dans la base


Message édité par fox25 le 12-12-2002 à 15:48:23
Reply

Marsh Posté le 12-12-2002 à 15:48:37    

Je pense que Joce a créé deux tables en effet, parceque tout dans une seule, c'est un peu pourri ;)
 
Sinon, pour ta requête bon courrage, je vois ce que tu veux faire, et t'es obligé de le faire en deux fois :
-> Une fois pour récupérer le premier post, et une fois pour récupérer le topic associé.
 
PS: Quand je dis en 2 fois, ça veuxpas forcément dire en deux requête, en une seule requête avec sous-requête y'a moyen. Pas envie de me faire chier à l'écrire par contre, j'ai réfléchit 30 secondes dessus et j'ai pas eu le courrage :D

Reply

Marsh Posté le 12-12-2002 à 15:49:06    

Fox25 a écrit :

:hello:  
 
Salut, pour mon forum, j'ai mis deux tables, une pour les messages (avec titre et données du message) et une autre pour les réponses.
 
Il me semble que c'est une bonne solution comme j'ai fait, je n'ai aucun problème. Je te conseil de faire comme ça, il me semble que c'est plus simple et mieux ordonné dans la base


J'avais fait ça aussi à un moment, mais le message du topic est ni plus ni moins qu'une réponse en fait.
C'est plus facile à gérer donc avec le message du post dans la même table que les réponses.


Message édité par MagicBuzz le 12-12-2002 à 15:49:49
Reply

Marsh Posté le 12-12-2002 à 15:51:38    

MagicBuzz a écrit :


J'avais fait ça aussi à un moment, mais le message du topic est ni plus ni moins qu'une réponse en fait.
C'est plus facile à gérer donc avec le message du post dans la même table que les réponses.


 
Je me suis mal exprimé, ce que j'appelle message et un topic en fait. Dans la table topic, il n'a que des données du topic (titre, date, dernier poste,...)


Message édité par fox25 le 12-12-2002 à 15:52:17
Reply

Marsh Posté le 12-12-2002 à 15:52:38    

Ha ok :D
 
Une table topic avec que le titre quoi ;)

Reply

Marsh Posté le 12-12-2002 à 18:37:44    

MagicBuzz a écrit :

Ha ok :D
 
Une table topic avec que le titre quoi ;)


 
c bon j'ai kan meme reussi avec mon archi. à une table, meme si c un peu degeu
 
mais j'ai pas envie de refaire une architecture basé sur une table  :sleep:


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 16-12-2002 à 18:25:55    

raph93 a écrit :


 
c bon j'ai kan meme reussi avec mon archi. à une table, meme si c un peu degeu
 
mais j'ai pas envie de refaire une architecture basé sur une table  :sleep:  

t'es bien parti pour faire un forum de merde alors :)

Reply

Marsh Posté le 16-12-2002 à 18:25:55   

Reply

Marsh Posté le 16-12-2002 à 18:31:37    

Moi, je vous conseille la chose suivante :
 
Une table pour les sujets (id sujet et texte du sujet)
Une table pour les index de réponses (id réponse, id sujets parent et id texte de réponse)
Une table pour le texte des réponses (id et texte)
 
 
 

Reply

Marsh Posté le 16-12-2002 à 18:38:44    

cyp en forsse a écrit :

Moi, je vous conseille la chose suivante :
 
Une table pour les sujets (id sujet et texte du sujet)
Une table pour les index de réponses (id réponse, id sujets parent et id texte de réponse)
Une table pour le texte des réponses (id et texte)


la table pour le texte des reponses n'a a mon avis d'interet que si tu stockes autre chose dans la table index de reponses et que tu souhaites la mettre en format statique.
Parce que a part ca separer index et texte c con vu que de toute facon t'auras un texte pour chaque id reponse.

Reply

Marsh Posté le 16-12-2002 à 18:51:29    

joce a écrit :


la table pour le texte des reponses n'a a mon avis d'interet que si tu stockes autre chose dans la table index de reponses et que tu souhaites la mettre en format statique.
Parce que a part ca separer index et texte c con vu que de toute facon t'auras un texte pour chaque id reponse.


 
Bien sur, mais la table "réponse" contient tous les champs de controle : id sujet, date, edit, auteur, ip...
 
La table "texte de réponse", elle, ne contient que trois champs : id, id message, texte.
 
ça permet plusieurs choses :
Déjà, de séparer en deux le volume total d'une table unique, ce qui pour des tables de plusieurs millions d'enreg, est interessant.
 
Ensuite, ça permet de faciliter les rechercher en plein texte.
La table "texte des réponse" n'est pas sur-indexée, elle n'a que son index de champs clé.
 
La table "réponse", elle, est multi-indéxé (id primaire, id sujet,  et date).
 
Une recherche texte sur une telle table serait trop couteuse.

Reply

Marsh Posté le 16-12-2002 à 18:59:09    

cyp en forsse a écrit :


 
Bien sur, mais la table "réponse" contient tous les champs de controle : id sujet, date, edit, auteur, ip...
 
La table "texte de réponse", elle, ne contient que trois champs : id, id message, texte.
 
ça permet plusieurs choses :
Déjà, de séparer en deux le volume total d'une table unique, ce qui pour des tables de plusieurs millions d'enreg, est interessant.
 
Ensuite, ça permet de faciliter les rechercher en plein texte.
La table "texte des réponse" n'est pas sur-indexée, elle n'a que son index de champs clé.
 
La table "réponse", elle, est multi-indéxé (id primaire, id sujet,  et date).
 
Une recherche texte sur une telle table serait trop couteuse.


de ton point de vu on est d'accord, et t'en profite pour foutre la deuxieme table en statique pour accelerer les acces aux index :)
ceci dit, ca te fait faire une jointure en plus, et donc faut faire un seek pour la table reponse et ensuite pour la table texte reponse.
Si comme moi tu n'utilises pas la table texte des reponses pour le moteur, tu n'as a mon avis pas interet a splitter la table en deux.


Message édité par joce le 16-12-2002 à 18:59:44
Reply

Marsh Posté le 16-12-2002 à 21:17:16    

joce a écrit :

t'es bien parti pour faire un forum de merde alors :)


 
 [:rotflmao]  [:rotflmao]  
 
non c bon j'ai remodelisé la parties message en 2 tables


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 10:10:34    

joce a écrit :


de ton point de vu on est d'accord, et t'en profite pour foutre la deuxieme table en statique pour accelerer les acces aux index :)
ceci dit, ca te fait faire une jointure en plus, et donc faut faire un seek pour la table reponse et ensuite pour la table texte reponse.
Si comme moi tu n'utilises pas la table texte des reponses pour le moteur, tu n'as a mon avis pas interet a splitter la table en deux.


 
ça serait à tester, en effet.
Et puis ça depend fortement de la database utilisée.
 
Sur Mysql, j'en sais rien.
Sur SQL serveur, sur de grosses table, le gain est effectif.
Sur Oracle, aucun interet, les perfs de cette DB ne sont pas dependante du volume des tables. :P
 
 
 
 

Reply

Marsh Posté le 17-12-2002 à 12:53:10    

cyp en forsse a écrit :


 
ça serait à tester, en effet.
Et puis ça depend fortement de la database utilisée.
 
Sur Mysql, j'en sais rien.
Sur SQL serveur, sur de grosses table, le gain est effectif.
Sur Oracle, aucun interet, les perfs de cette DB ne sont pas dependante du volume des tables. :P


pour mysql non plus, vu que l'index statique se contente de faire taille du champ * offset pour trouver la position de l'entree dans le fichier de donnee

Reply

Marsh Posté le 17-12-2002 à 18:08:58    

joce a écrit :


pour mysql non plus, vu que l'index statique se contente de faire taille du champ * offset pour trouver la position de l'entree dans le fichier de donnee


 
si j'ai le temps de tester , j'aimerais bien faire une version du forum qui taperait sur la meme base mais sous SQL Server , je pourrais enfin profiter des contraintes d'integrité [:youpi]
 
ca serait aussi marrant de voir en perf ce ke ca donne
 
http://raph93.dyndns.org/diagramme.jpg


Message édité par raph93 le 17-12-2002 à 18:13:51

---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 18:14:28    

Mais dis moi, tu n'as pas prévu la possibilité d'avoir plusieurs forum  :??:  
 

Reply

Marsh Posté le 17-12-2002 à 18:15:23    

Sinon, en SQL serveur, c'est à mon avis bien plus rapide, mais ça nécéssite un serveur plus puissant (je sais, ça parait con)

Reply

Marsh Posté le 17-12-2002 à 18:15:38    

cyp en forsse a écrit :

Mais dis moi, tu n'as pas prévu la possibilité d'avoir plusieurs forum  :??:  
 
 


 
 :non:  plusieurs categories mais pas plusieurs forum


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 18:16:19    

raph93 a écrit :


 
 :non:  plusieurs categories mais pas plusieurs forum


 
je vois.

Reply

Marsh Posté le 17-12-2002 à 18:18:15    

Sinon, là :  http://80.65.230.180/forum/ tu as mon forum (mais trés loin d'etre fini) en ASP.NET / SQL serveur.
 
Pour info, j'ai plus de 15 tables.

Reply

Marsh Posté le 17-12-2002 à 18:26:31    

cyp en forsse a écrit :

Sinon, là :  http://80.65.230.180/forum/ tu as mon forum (mais trés loin d'etre fini) en ASP.NET / SQL serveur.
 
Pour info, j'ai plus de 15 tables.


 
putain, au niveau perf ca tient la route meme avec de l' ADSL !! :jap:  
 
.NET  :love:  :love:  
 
http://rafi93.free.fr/photos/vsnet.jpg


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 18:31:00    

cyp en forsse a écrit :

Sinon, là :  http://80.65.230.180/forum/ tu as mon forum (mais trés loin d'etre fini) en ASP.NET / SQL serveur.
 
Pour info, j'ai plus de 15 tables.


 
regarde celui la  
 
http://raph93.dyndns.org/forum/


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 18:33:07    

raph93 a écrit :


 
putain, au niveau perf ca tient la route meme avec de l' ADSL !! :jap:  
 
.NET  :love:  :love:  
 
http://rafi93.free.fr/photos/vsnet.jpg


 
Heu... non, là, question perfs, c'est minable (80 millisecondes de génération de page).
 
Le serveur n'est même pas digne d'un PC bureatique Pentium II  :(  
 
Mais sur des plateformes plus grosses, on tombe à 8 milliseconde par page, requète SQL comprise.
 
Sinon, le .NET  :love:

Reply

Marsh Posté le 17-12-2002 à 18:35:13    


 
Pas mal aussi !
Mais comme pour le mien, y'a encore du taf  :p

Reply

Marsh Posté le 17-12-2002 à 18:51:37    

raph93 a écrit :


 
putain, au niveau perf ca tient la route meme avec de l' ADSL !! :jap:  


 
C'est quoi le rapport ? :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-12-2002 à 18:52:31    

antp a écrit :


 
C'est quoi le rapport ? :heink:


 
ben il heberge la connexion chez lui , la bande passante n'est pas la meme que s'il etait chez un hebergeur avec une LS 2mbits  :D


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 18:53:17    

comment ont recupere le temps de generation des pages ??
 
jvoudrais bien l'implementer sur mon forum


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 18:57:32    

raph93 a écrit :


ben il heberge la connexion chez lui , la bande passante n'est pas la meme que s'il etait chez un hebergeur avec une LS 2mbits  :D  


oui, et ? le rapport avec la génération de la page ?

Reply

Marsh Posté le 17-12-2002 à 18:58:11    

raph93 a écrit :


 
ben il heberge la connexion chez lui , la bande passante n'est pas la meme que s'il etait chez un hebergeur avec une LS 2mbits  :D  


 
Oui merci, j'avais pigé ça, mais je vois pas trop le rapport .NET qui tient la route "même en ADSL"... À priori le système dépend pas de la connexion :heink:
 
edit: grilled :o


Message édité par antp le 17-12-2002 à 18:58:31

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-12-2002 à 18:58:15    

lorill a écrit :


oui, et ? le rapport avec la génération de la page ?


 
aucun  :whistle:


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 19:01:20    

raph93 a écrit :


 
si j'ai le temps de tester , j'aimerais bien faire une version du forum qui taperait sur la meme base mais sous SQL Server , je pourrais enfin profiter des contraintes d'integrité [:youpi]
 
ca serait aussi marrant de voir en perf ce ke ca donne
 
http://raph93.dyndns.org/diagramme.jpg


tu sais que MySQL a aussi les contraintes d'integrite :D

Reply

Marsh Posté le 17-12-2002 à 19:02:23    

cyp en forsse a écrit :

Sinon, en SQL serveur, c'est à mon avis bien plus rapide, mais ça nécéssite un serveur plus puissant (je sais, ça parait con)

SQL Server se fait torcher par MySQL a config equivalente :D

Reply

Marsh Posté le 17-12-2002 à 19:03:05    

joce a écrit :


tu sais que MySQL a aussi les contraintes d'integrite :D


 
t payé combien pour leur faire la promo ??? :whistle:


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 19:04:35    

raph93 a écrit :


 
t payé combien pour leur faire la promo ??? :whistle:  

c'est pas de la promo c'est de l'information vu qu'apparement t'as pas au courant :D

Reply

Marsh Posté le 17-12-2002 à 19:04:48    

joce a écrit :

SQL Server se fait torcher par MySQL a config equivalente :D


 
je sais bien qu'en perf. il est pas mal , et vraiment moins lourd que SQL Server, mais peut-on vraiment appellé ca un SGBD  :sarcastic:


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le 17-12-2002 à 19:05:56    

raph93 a écrit :


 
je sais bien qu'en perf. il est pas mal , et vraiment moins lourd que SQL Server, mais peut-on vraiment appellé ca un SGBD  :sarcastic:  

Ba oui, qu'est ce qui lui manque (a part les views, les triggers et le PL/SQL qui sont en cours d'implementation) ?


Message édité par joce le 17-12-2002 à 19:06:56
Reply

Marsh Posté le 17-12-2002 à 19:06:50    

joce a écrit :

Ba oui, qu'est ce qui lui manque (a part les views et les triggers qui sont en cours d'implementation) ?


 
de toute facon , c'est gratuit alors jpeux pas me plaindre :o


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed