有没有更好的方法来处理我的MySQL数据库表?

时间:2018-04-04 18:10:58

标签: mysql database

我的网站允许人们创建测验。每个测验最多包含20个问题,每个问题最多包含5个答案。我有一个用于测验,问题和答案的数据库表。这意味着一个测验可以有121行。有没有更好的方法来处理这个问题,例如在问题表的单独栏中输入测验答案?

1 个答案:

答案 0 :(得分:1)

使用默认的 InnoDB 引擎 - 一行会增加20字节的开销。对于100万行,这大约是20 MB,如果组织和索引良好,这对现代硬件来说几乎没有任何意义。即使您使用智能手机作为服务器,也应该没问题。

但是,您应该为每个实体使用至少一个表。测验,问题和答案是不同的实体 - 因此您应该至少有三个表,这些表由外键链接。

以下是规范化架构的示例:

create table quizzes(
    quiz_id int unsigned auto_increment primary key,
    title varchar(255)
);

create table questions (
    question_id int unsigned auto_increment primary key,
    quiz_id int unsigned not null
    title varchar(255),
    foreign key (quiz_id) references quizzes(quiz_id)
);

create table answers (
    answer_id int unsigned auto_increment primary key,
    question_id int unsigned not null
    title varchar(255),
    foreign key (question_id) references questions(question_id)
);