1

私は人々が質問に答えてもらうアプリを開発しています、そしてそれはすでに異なる列に正しい質問と間違った質問の数を保存しています。その他の機能(すべての時間スコアなど)については、1日あたりの合計回答数、すべての時間などを取得する必要があります。

したがって、次のようにすることをお勧めします。1.質問の回答ごとに、DBに保存します:answer_correct、answer_incorrect、およびanswers_total

また

  1. 回答ごとに、DBに保存します:answer_correct、answer_incorrect、
  2. ランキング機能を実行するとき、データベースはその時点でそれらを合計しますか?

これは非常に一般的なように思えますが、MySQLを深く理解するにつれて、パフォーマンスに関するベストプラクティスを開発しようとしています。

ありがとう!

4

1 に答える 1

0

次の構造をお勧めします。

CREATE TABLE IF NOT EXISTS `answers` (
  `userId` int(11) NOT NULL,
  `questionId` int(11) NOT NULL,
  `isCorrect` tinyint(3) unsigned NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`userId`,`questionId`),
  KEY `isCorrect` (`isCorrect`),
  KEY `time` (`time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

各回答で、このテーブルにレコードを追加します。必要に応じて、この表から特定の期間の正解/不正解の数を取得します。

..ユーザーが1つの質問に数回回答できるかどうかはわかりませんが、プライマリインデックスに注意してください。

于 2012-07-16T15:07:54.797 に答える