Как создать базу данных MySQL с множеством таблиц с одинаковыми заголовками полей? - PullRequest
0 голосов
/ 04 октября 2011

Наверное, глупый вопрос, но я новичок во всем этом.

Я создаю базовую программу для викторины на PHP, я хочу, чтобы база данных MySQL составляла таблицу для каждого теста, каждая таблица должна иметь одинаковые заголовки (Вопрос, 1-й, 2-й, 3-й и 4-й ответы с несколькими вариантами ответови правильный ответ).Каждая таблица будет содержать сколько вопросов в этом конкретном тесте.

Я использую PHPMyAdmin на сервере WAMP.

Я не уверен, что это самый эффективный способ сделать это, но у меня нет других идей, я очень открыт для предложений:)

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

Затем я перейду к ссылкеэто с моим PHP-кодом, и сделать хороший пользовательский интерфейс для пользователей, чтобы создавать и выполнять тесты.

Я был бы очень благодарен за любые ответы и приветствую предложения.Извините, я сделал этот вопрос довольно долго.Еще раз спасибо заранее :) хх

Ответы [ 3 ]

4 голосов
/ 04 октября 2011

Гораздо более гибкий дизайн будет состоять из 3 таблиц;

quizzes: overall info about each quiz
    id: int - unique ID of a quiz
    name: text - descriptive text

questions:
    id - int - unique id of question
    quiz_id - int - foreign key pointing at quizzes table
    name: text - text of a question

choices:
    id - int - unique id of a choice/answer for a question
    question_id - int - foreign key pointing at questions table
    name: text - text of this particular choice

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

0 голосов
/ 04 октября 2011

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

Я бы предложил более простую структуру для начала работы, которую гораздо проще программировать. Иметь одну таблицу для всех тестов и иметь столбец "quiz-name" в каждой строке, например:

 Quiz name | Question      | 1st | 2nd | 3rd   | 4th     | correct
 --------------------------------------------------------------------
 PHP         does it work  | yes | no  | maybe | no idea | 1
 PHP         looks good    | yes | no  | maybe | no idea | 2
 mysql       does it work  | yes | no  | maybe | no idea | 2
 mysql       looks good    | yes | no  | maybe | no idea | 3

По мере того, как вы становитесь более опытным, вы можете пересмотреть свой дизайн и использовать предложенные множественные структуры.

0 голосов
/ 04 октября 2011

Способ SQL больше похож на создание, скажем, четырех таблиц:

  • Викторины (идентификатор, имя)
  • Вопросы (идентификатор, quizz_id, название, answer1, Ответ2, ..., решение)
  • Пользователи (идентификатор, имя, ...)
  • Quizz_results (ID, идентификатор_пользователь, quizz_id, результат)

Для данной викторины скрипт php отвечает за получение вопросов для этой викторины, а другой скрипт, где вы будете публиковать ответы пользователей, будет отвечать за вычисление результата и подачу таблицы Quizz_result.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...