MySQL - 数据库设计 - 如何创建多级父表的外键?

时间:2017-01-23 15:32:53

标签: mysql database-design foreign-keys

这是我第一次创建具有多个级别的数据库(问题子部分),我不确定如何在答案表中创建外键

(注意,我的问题表结构可能不太理想)

目前我有一个3层问题系统: 1.1.1,1.1.2 ...... 每个级别有一个表

最后我有一个答案表,我正在尝试为上述结构创建一个外键。 3个单独的外键是正确的方法吗?每个表一个? - 我在下面做了。 但是我觉得这可能不对。我也可能过于复杂化了。

代码如下,希望很清楚

create table if not exists company(
id_comp int not null,
company_name varchar(255),
country varchar(128),,

primary key (id_comp)
);



create table if not exists ques_l1(
id_ques_l1 int not null auto_increment,
desc_ques_l1 varchar(128),

primary key (id_ques_l1)
);

create table if not exists ques_l2(
id_ques_l2 int not null auto_increment,
id_ques_l1 int,
desc_ques_l2 varchar(128),

primary key (id_ques_l2),
foreign key (id_ques_l1) references ques_l1(id_ques_l1)

);

create table if not exists ques_l3(
id_ques_l3 int not null auto_increment,
id_ques_l1 int,
id_ques_l2 int,
desc_ques_l3 varchar(128),

primary key (id_ques_l3),
foreign key (id_ques_l2) references ques_l2(id_ques_l2)
);



create table if not exists answers(
id_answer int auto_increment not null,
id_comp int,
year int(4),
id_ques_l1 int,
id_ques_l2 int,
id_ques_l3 int,
score int,

primary key (id_answer),
foreign key (id_comp) references company(id_comp),
foreign key (id_ques_l1) references ques_l1(id_ques_l1),
foreign key (id_ques_l2) references ques_l2(id_ques_l2),
foreign key (id_ques_l3) references ques_l3(id_ques_l3)
);

0 个答案:

没有答案