-- standalone, data table
create table b (
b_id serial not null,
primary key (b_id),
name text
);
-- 1 single FK import, data table
create table a (
a_id serial not null,
primary key (a_id),
b_id int not null,
foreign key (b_id) references b (b_id),
name text
);
-- 2 single FK import, link table between 'a' and 'b'
-- note that 'a' both imports a FK from 'b', as well as links to 'b' via 'a_b'
create table a_b (
a_b_id serial not null,
primary key (a_b_id),
a_id int not null,
foreign key (a_id) references a (a_id),
b_id int not null,
foreign key (b_id) references b (b_id)
);
-- 1 single FK import, data table
create table c (
c_id serial not null,
primary key (c_id),
b_id int not null,
foreign key (b_id) references b (b_id),
name text
);
-- 1 single FK import, data table
create table d (
d_id serial not null,
primary key (d_id),
c_id int not null,
foreign key (c_id) references c (c_id),
name text
);
-- standalone, data table
create table e (
e_id serial not null,
primary key (e_id),
name text
);
-- 2 single FK import, link table between 'c' and 'e'
create table c_e (
c_e_id serial not null,
primary key (c_e_id),
c_id int not null,
foreign key (c_id) references c (c_id),
e_id int not null,
foreign key (e_id) references e (e_id)
);
-- 1 triple FK import, link table between 'e', 'e', and 'e'
create table f (
f_id serial not null,
primary key (f_id),
e1_id int not null,
foreign key (e1_id) references e (e_id),
e2_id int not null,
foreign key (e2_id) references e (e_id),
e3_id int not null,
foreign key (e3_id) references e (e_id)
);
-- 1 single FK import, 1 double FK import, link table between 'a', 'e', and 'e'
create table g (
g_id serial not null,
primary key (g_id),
a_id int not null,
foreign key (a_id) references a (a_id),
e1_id int not null,
foreign key (e1_id) references e (e_id),
e2_id int not null,
foreign key (e2_id) references e (e_id)
);
-- 1 double FK import, 1 triple FK import, link table between 'a', 'a', 'e', 'e', and 'e'
create table h (
h_id serial not null,
primary key (h_id),
a1_id int not null,
foreign key (a1_id) references a (a_id),
a2_id int not null,
foreign key (a2_id) references a (a_id),
e1_id int not null,
foreign key (e1_id) references e (e_id),
e2_id int not null,
foreign key (e2_id) references e (e_id),
e3_id int not null,
foreign key (e3_id) references e (e_id)
);
-- 3 single FK import, link table between 'b', 'c', and 'd'
create table i (
i_id serial not null,
primary key (i_id),
b_id int not null,
foreign key (b_id) references b (b_id),
c_id int not null,
foreign key (c_id) references c (c_id),
d_id int not null,
foreign key (d_id) references d (d_id)
);
insert into b (name) values ('balloon');
insert into b (name) values ('bangup');
insert into b (name) values ('beluga');
insert into b (name) values ('blanch');
insert into b (name) values ('botch');
insert into b (name) values ('brooch');
insert into b (name) values ('broccoli');
insert into b (name) values ('blitz');
insert into b (name) values ('blintz');
insert into a (name,b_id) values ('alkane',1);
insert into a (name,b_id) values ('alkyne',2);
insert into a (name,b_id) values ('amygdala',3);
insert into a (name,b_id) values ('aorta',4);
insert into a_b (a_id,b_id) values (1,5);
insert into c (name,b_id) values ('cairn',6);
insert into c (name,b_id) values ('cootie',7);
insert into c (name,b_id) values ('cochlea',8);
insert into d (name,c_id) values ('drake',1);
insert into e (name) values ('ear');
insert into e (name) values ('element');
insert into e (name) values ('embryo');
insert into e (name) values ('encumber');
insert into e (name) values ('enhance');
insert into e (name) values ('ependyma');
insert into e (name) values ('epididymis');
insert into e (name) values ('ergot');
insert into e (name) values ('esophagus');
insert into c_e (c_id,e_id) values (2,1);
insert into f (e1_id,e2_id,e3_id) values (2,3,4);
insert into g (a_id,e1_id,e2_id) values (2,5,6);
insert into h (a1_id,a2_id,e1_id,e2_id,e3_id) values (3,4,7,8,9);
insert into i (b_id,c_id,d_id) values (9,3,1);