Quiz App MySQL更好的存储问题/答案的方法

时间:2015-12-18 03:18:56

标签: php mysql

我正在使用PHP和MySQL开发测验应用程序。

我想创建一个测验,一个问题可以根据需要提供尽可能多的答案。当然,我将在MySQL中存储所有可能的答案,并且我将在复选框中显示所有可能的答案,您可以在其中查看可用的任意数量的答案。

问题是:如果您不希望将自己限制在一定数量的可能答案中,那么存储问题的所有可能答案的好方法。在一个表中为可能的答案创建许多列不是最佳的,这将是非常不方便的。

我应该在一列中保存所有可能的答案并用分隔符分隔它们,以便我可以用PHP提取每一个吗?

任何建议都会非常感激。

1 个答案:

答案 0 :(得分: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)
);

使用第一个选项,您可以根据需要重复使用答案。使用第二个选项,您只能使用一个问题的答案。这两个选项都允许您为给定问题输入所需的答案。