2013-03-09 3 views
2

Я немного застрял в разработке базы данных для своего приложения для викторины. Просьба направлять меня на этом -Дизайн базы данных для приложения для викторины

Мое приложение UI будет идти-то вроде этого -

Image

Мои DB Столы -

пользователя -

user_id 
user_name 
user_email 
user_password 
user_registration_date 
user_active 

Вопрос -

question_id 
question_title 
question_category_id 
question_level_id 
question_author_id 
question_status 
question_create_date 

Категория -

cat_id 
cat_name 
cat_author 
cat_create-date 
cat_status 

Уровень -

level_id 
level_name 

Ответ -

????????? 

Запросы -

Я застрял с ответом table..means Я не уверен, какие столбцы должны быть установлены в ответ таблицы с data type для этого.

МОЙ ответ будет только в формате опций означает 1,2,3,4 опции или true false в опции NO text type answer ..just выбор.

Просьба направлять меня, поскольку я застрял в этом.

Просьба указать, есть ли что-то неправильное в вышеупомянутых таблицах, и сообщите мне, если разбиение отдельной таблицы на уровень OK или его плохое (уровень будет только - начальный, средний, предварительный).

ответ

4

В прошлом, когда я сделал это, я обработал ответы таким образом:

Таблица: QuestionAnswers
Поля: ID, QuestionID, AnswerText (строка), AnswerCorrect (BOOL)

Таблица: QuestionAnswerResponses
Поля: ID, QuestionAndswerID (ссылка на таблицу ID выше), Userid, AnswerSelected (bool), TimeAnswered (datetimr).

+0

+1 для включения структуры для записи ответов пользователей. –

+0

@JackPettinger, какой у вас совет для отдыха в столах .. это нормально? +1 – Trialcoder

+0

@Trialcoder Другие таблицы выглядят отлично. Однако, если я что-то не хватает, похоже, что ваша структура настроена только для одной викторины. Если вы хотите пройти несколько викторин, вам понадобится таблица Quiz и таблица QuizQuestions. Тогда вы даже можете использовать таблицу UserQuizes, ограничивая пользователей определенными викторинами. –

1

Во-первых, это избыточно повторять имя таблицы в каждом поле, содержащемся в таблице. Поэтому я предлагаю не делать этого. Единственное возможное исключение - это поле первичного ключа/автоинкремента, так как некоторые люди считают его запутанным или дополнительной работой для ввода myTable.id, когда две таблицы имеют поле идентификатора. Я не уверен, почему myTable.id больше работает, чем myTable_id, но там у вас есть.

Что я использовал в прошлом

стол дистрактор (что типы электронного обучения называют доступные ответы на вопрос)
ID
question_id (FK к столу вопроса)
текст (текст, отображаемый на экране для этого ответа)
isCorrect
displayOrder

Если вы хотите гибкость повторное использование ответов, вы должны пойти с таблицей соединений вместо того, чтобы иметь идентификатор вопроса в таблице distractors. Однако, поскольку вы хотите закрепить дату создания вопроса, вы, вероятно, захотите сохранить ответ, строго указывая на один вопрос.