Dieser Beitrag ist eine Folgemaßnahme zu dieser beantworteten Frage: Beste Methode zum Speichern einer Liste von Benutzer-IDs .
Ich habe den epischen Rat von cletus und Mehrdad Afshari befolgt, einen normalisierten Datenbankansatz zu verwenden. Sind die folgenden Tabellen ordnungsgemäß für die richtige Optimierung eingerichtet? Ich bin ziemlich neu in Sachen MySQL-Effizienz, daher möchte ich sicherstellen, dass dies effektiv ist.
Wenn es darum geht, die durchschnittliche Bewertung für ein Spiel und die Gesamtzahl der Stimmen zu ermitteln, sollte ich dann die folgenden beiden Abfragen verwenden?
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`)
) ;