2012-01-25 2 views
3

У меня есть игра. В игре люди делают много вариантов из двух вариантов.mysql сохранение правильных и неправильных строк ответа

Выбор может быть правильным или неправильным, и я сохраняю результат их запуска через игру (которая может быть очень большой длины) в виде строки с 1 для правильного ответа и 0 для неправильных ответов.

Так, например, игрок 128937 будет хранить в своей колонке строки строку 00010101010010001010111 как varchar(5000).

Есть ли лучший способ хранить эту информацию в MYSQL? (Я тоже использую PHP, если это может помочь)

+0

есть ли смысл знать конкретные данные? получил первое неправильное, а затем второе право и т. д.? потому что если вам нужна только сумма, сохраните 2 столбца один на сумму, которую он получил правильно, а один на сумму, которую он получил неправильно. –

ответ

0

Почему бы не использовать tinyint (1) для каждого параметра, а не использовать строки?

+0

Если я правильно понимаю, я не могу этого сделать, потому что ему потребуется слишком много столбцов ... и вытягивание столбцов будет медленным ... – David19801

+1

Так же медленно, как тянущие строки;) – craig1231

4

Я хотел бы создать новую таблицу (скажем, это называется «ответы») с тремя столбцами: question_id, user_id и ответа (который будет содержать значения 0/1)

каждый раз, когда игрок отвечает на вопрос, который вы ВСТАВИТЬ новую запись в эту таблицу.

Таким образом, это будет легче поддерживать сумму правильных/неправильных ответов

+0

Я думаю, что это было бы очень опасно для памяти ... Я надеялся, что существует тип данных, который я мог бы использовать для столбца, который был лучше, чем varchar (5000) .. – David19801

+2

@ David19801: question_id (INT), user_id (INT), answer (TINYINT) = 4 байта + 4 байта + 1 байт = 9 байт для строки. – Crontab

+0

@Crontab: Это будет за строку. поэтому для 100 элементов это потребует 900 байт, для варчара потребуется 200? – David19801

0

Я хотел бы сделать несколько таблиц

ВЫБОР

id 
scenario (or other title) 

варианты

id 
choice_id 
title (example: "go left" or "turn around and go home" 
correct (0 or 1) 

user_choices

user_id 
option_id 
choice_id (optional since choice_id is already in options table) 
Смежные вопросы