繁体   English   中英

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

[英]Is there a better way to handle my MySQL database tables?

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

使用默认的InnoDB引擎-一行会增加20字节左右的开销。 如果组织得很好并且建立索引的话,那么一百万行大约需要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)
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM