我正在使用PHP和MySQL开发测验应用程序。
我想创建一个测验,一个问题可以根据需要提供尽可能多的答案。当然,我将在MySQL中存储所有可能的答案,并且我将在复选框中显示所有可能的答案,您可以在其中查看可用的任意数量的答案。
问题是:如果您不希望将自己限制在一定数量的可能答案中,那么存储问题的所有可能答案的好方法。在一个表中为可能的答案创建许多列不是最佳的,这将是非常不方便的。
我应该在一列中保存所有可能的答案并用分隔符分隔它们,以便我可以用PHP提取每一个吗?
任何建议都会非常感激。
答案 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)
);
使用第一个选项,您可以根据需要重复使用答案。使用第二个选项,您只能使用一个问题的答案。这两个选项都允许您为给定问题输入所需的答案。