Bonjour,
Je m'initie à un mysql un peu plus avancé ces derniers temps, et je tatônne encore pas mal, malgré mes nombreuses sources.
Dans le cadre d'un projet, j'ai créé une table de messagerie privée contenant 11 champs, de types et de taille variable. J'enregistrai les destinataires d'un message dans le même champ, ce qui pose de nombreux problèmes. J'ai donc essayé de les résoudre et me suis penché sur les jointures, les clefs composites, et la 'forme normale' (modèle pour DB).
Je me retrouve donc maintenant avec 3 tables:
(grosso modo, j'ai fait les clefs composites après).
J'utilise donc les jointures sql pour retrouver mes enregistrements.
Le soucis est le suivant: je cherche à optimiser mes requêtes, et donc à minimiser le nombres de champs fouillés par mysql (mysql->explain), mais systématiquement mes requêtes balayent au moins tous les enregistrements de la notebox.
Ma question est donc: est-ce que mon modèle est convenablement conçu? Comment pourrais je l'améliorer?
En vous remerciant,
Smoke
Modifié par Smoke (15 Sep 2009 - 20:18)
Je m'initie à un mysql un peu plus avancé ces derniers temps, et je tatônne encore pas mal, malgré mes nombreuses sources.
Dans le cadre d'un projet, j'ai créé une table de messagerie privée contenant 11 champs, de types et de taille variable. J'enregistrai les destinataires d'un message dans le même champ, ce qui pose de nombreux problèmes. J'ai donc essayé de les résoudre et me suis penché sur les jointures, les clefs composites, et la 'forme normale' (modèle pour DB).
Je me retrouve donc maintenant avec 3 tables:
CREATE TABLE `smokingf_aMMdTest`.`notebox_notes` (
`ref` CHAR( 10 ) NOT NULL ,
`titre` TINYTEXT NOT NULL ,
`texte` TEXT NOT NULL ,
`date` CHAR( 16 ) NOT NULL ,
PRIMARY KEY ( `ref` )
) ENGINE = MYISAM
CREATE TABLE `smokingf_aMMdTest`.`own` (
`ref` CHAR( 10 ) NOT NULL ,
`tag` CHAR( 10 ) NOT NULL ,
`stat` ENUM( '0','1','2' ) NOT NULL ,
PRIMARY KEY ( `ref` )
) ENGINE = MYISAM
CREATE TABLE `smokingf_aMMdTest`.`notebox_chat` (
`chatTag` CHAR( 10 ) NOT NULL ,
`ref` CHAR( 10 ) NOT NULL ,
PRIMARY KEY ( `chatTag` )
) ENGINE = MYISAM
(grosso modo, j'ai fait les clefs composites après).
J'utilise donc les jointures sql pour retrouver mes enregistrements.
Le soucis est le suivant: je cherche à optimiser mes requêtes, et donc à minimiser le nombres de champs fouillés par mysql (mysql->explain), mais systématiquement mes requêtes balayent au moins tous les enregistrements de la notebox.
Ma question est donc: est-ce que mon modèle est convenablement conçu? Comment pourrais je l'améliorer?
En vous remerciant,
Smoke
Modifié par Smoke (15 Sep 2009 - 20:18)