Ce message est une suite de cette réponse à cette question: Best method for storing a list of user IDs.Structure efficace de la table MySQL pour le système de notation
J'ai pris le conseil épique de Meethdad Afshari et de Cletus d'utiliser une approche de base de données normalisée. Les tableaux suivants sont-ils correctement configurés pour une optimisation correcte? Je suis un peu nouveau à l'efficacité de MySQL, donc je veux m'assurer que c'est efficace.
Aussi, quand il s'agit de trouver la note moyenne pour un jeu et le nombre total de votes devrais-je utiliser les deux requêtes suivantes, respectivement?
SELECT avg(vote) FROM votes WHERE uid = $uid AND gid = $gid;
SELECT count(uid) FROM votes WHERE uid = $uid AND gid = $gid;
CREATE TABLE IF NOT EXISTS `games` (
`id` int(8) NOT NULL auto_increment,
`title` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(8) NOT NULL auto_increment,
`username` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `votes` (
`uid` int(8) NOT NULL,
`gid` int(8) NOT NULL,
`vote` int(1) NOT NULL,
KEY `uid` (`uid`,`gid`)
) ;
Actuellement, je n'utilise pas MyISAM et pas InnoDB. Recommanderiez-vous InnoDB. –