2013-03-26 6 views
-2

Я создал тестовую систему с использованием Wordpress, jQuery и PHP, которая отлично работает. Область, в которой у меня мало опыта, - это базы данных mysql.Сохранение результатов тестов в базе данных: поддержание базы данных аккуратно

Я не уверен, как сохранить результаты в аккуратном и аккуратном порядке.

То, что я хочу, чтобы сохранить следующие:

  1. имени пользователей.
  2. Название испытания.
  3. Вопросы.
  4. Ответы.
  5. Оценка.
  6. Pass/fail.

Очки 1, 2, 5 & 6 довольно прямолинейно сохраняют данные. Путаница приходит с вопросами и ответами.

Как я могу сохранить их аккуратным способом в базе данных mysql?

Скажите, что есть 10 вопросов, каждый из которых имеет несколько вариантов ответов, как я могу сохранить каждый из них в базе данных, но связать ли он с пользователем, который их заполнил? Я не уверен, как сохранить базу данных аккуратно, и это может быстро выйти из-под контроля.

В будущем я, возможно, захочу сделать некоторые поиски по этим вопросам и ответам.

+0

Ухоженный способ? Вы просите нас нормализовать вашу базу данных для вас? – BenM

+0

@BenM Поскольку я не очень хорошо знаком с mysql, мне было интересно, все ли это можно сделать в одной таблице. Я не просил кого-то сделать это для меня. – Rob

+0

Да, все можно хранить в одной таблице. Должно быть? Нет! Прислушайтесь к некоторым советам в ответ от @duffymo и изучите реляционные базы данных. – BenM

ответ

2

Необходимо нормализовать структуру своей базы данных.

Основываясь на приведенных выше таблицах, вы можете хранить всю необходимую информацию обычным способом.Обратите внимание, что нормализация не всегда поможет, и это зависит от требования вашего приложения. Это также лучший идеал, чтобы хранить общий балл в отдельной таблице вместе с user_id и test_id после завершения теста, поскольку это позволит избежать объединения в несколько таблиц.

+0

Хорошо, конечно, дает мне направление - я думаю, реальный ответ - разбить столы на несколько. – Rob

4

«Чистый» должен заставить вас думать о «нормализации».

Начните думать о взаимоотношениях и не беспокойтесь о таблицах на данный момент. Вы уже озвученные некоторые из них:

  • вопросы имеют один или несколько ответов
  • один или несколько ответов на данный вопрос можно считать «правильным»
  • тесты имеют один или несколько вопросов
  • тест имеет один балл и одно имя
  • пользователь может принимать ноль или более тестов
  • тесты могут быть взяты ноль или более пользователей
  • на вопрос может appea r на ноль или более тестов (?)

После того, как вы разобрали эти таблицы, относительно легко описать.

+0

Хорошо, так что это более чем вероятно, по крайней мере, 2 таблицы и связывание их вместе с именем пользователя? Поскольку я не очень хорош в mysql, мне было интересно, можно ли все это сделать в одной таблице, но это не представляется возможным, так как каждый вопрос нуждается в новой строке. – Rob

+0

Нет, есть много более чем двух таблиц. Вы действительно этого не понимаете, не так ли? Конечно, вы можете положить все в один стол. Попробуй и посмотри. Вы узнаете довольно быстро, почему люди нормализуются. Один стол - это ваша идея «опрятного»? Удачи с этим. – duffymo

+0

Наверное, нет! Wordpress управляет вопросами и ответами, так что это то, что пользователь заполняет, что нужно сохранить. – Rob

0

создать один вопрос в таблице у вас есть question_id, вопрос и выбор. в таблице ohter вам нужно сохранить только question_id, выбор, имя пользователя, счет, имя теста и так далее. question_id будет основной базой вопросов.

Смежные вопросы