2015-12-18 3 views
1

Я разрабатываю приложение для викторины с использованием PHP и MySQL.Quiz App MySQL лучший подход для хранения вопросов/ответов

Я хотел бы создать викторину, в которой у одного вопроса может быть столько ответов, сколько необходимо. Конечно, я буду хранить все возможные ответы в MySQL, и я собираюсь отобразить все возможные ответы в флажках, где вы можете проверить любое количество доступных ответов.

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

Должен ли я сохранять все возможные ответы в одном столбце и разделять их разделителем, чтобы я мог извлечь каждый из них с помощью PHP?

Любой совет был бы действительно оценен.

+3

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

ответ

4

Как Knells упоминает, вы могли бы создать что-то вроде этого:

create table questions (
    id int not null auto_increment, 
    question text, 
    primary key (id) 
); 

create table answers (
    id int not null auto_increment, 
    answer text, 
    primary key (id) 
); 

create table question_answers (
    question_id int not null, 
    answer_id int not null, 
    constraint fk_q_a_question_id foreign key (question_id) references questions (id), 
    constraint fk_q_a_answer_id foreign key (answer_id) references answers (id), 
    primary key (question_id, answer_id) 
); 

В качестве альтернативы вы можете даже сделать:

create table questions (
    id int not null auto_increment, 
    question text, 
    primary key (id) 
); 

create table answers (
    id int not null auto_increment, 
    answer text, 
    question_id int not null, 
    primary key (id), 
    constraint fk_answers_question_id foreign key (question_id) references questions (id) 
); 

С первым вариантом, вы можете использовать ответ на столько вопросов, как тебе нравится. При втором варианте вы можете использовать ответ только для одного вопроса. Оба варианта позволяют ввести столько ответов, которые вы хотите задать для данного вопроса.

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