Explicit schema + FK indices.
This commit is contained in:
parent
d092637b33
commit
b15eb217ef
9 changed files with 56 additions and 46 deletions
|
@ -3,11 +3,11 @@
|
||||||
|
|
||||||
CREATE TABLE users (
|
CREATE TABLE users (
|
||||||
id BIGSERIAL NOT NULL,
|
id BIGSERIAL NOT NULL,
|
||||||
username CHARACTER VARYING(100),
|
username CHARACTER VARYING(100) NOT NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||||
|
|
||||||
CONSTRAINT users_pkey PRIMARY KEY (id)
|
CONSTRAINT users_pkey PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
|
|
|
@ -3,17 +3,12 @@
|
||||||
|
|
||||||
CREATE TABLE genera (
|
CREATE TABLE genera (
|
||||||
id BIGSERIAL NOT NULL,
|
id BIGSERIAL NOT NULL,
|
||||||
genus_name CHARACTER VARYING(100),
|
genus_name CHARACTER VARYING(100) NOT NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||||
|
|
||||||
CONSTRAINT genus_pkey PRIMARY KEY (id)
|
CONSTRAINT genus_pkey PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE UNIQUE INDEX genusname_idx
|
|
||||||
ON genera
|
|
||||||
USING btree
|
|
||||||
(genus_name COLLATE pg_catalog."default");
|
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,15 @@
|
||||||
CREATE TABLE species (
|
CREATE TABLE species (
|
||||||
id BIGSERIAL NOT NULL,
|
id BIGSERIAL NOT NULL,
|
||||||
genus_id BIGINT NOT NULL,
|
genus_id BIGINT NOT NULL,
|
||||||
species_name CHARACTER VARYING(100),
|
species_name CHARACTER VARYING(100) NOT NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||||
|
|
||||||
CONSTRAINT species_pkey PRIMARY KEY (id),
|
CONSTRAINT species_pkey PRIMARY KEY (id),
|
||||||
FOREIGN KEY (genus_id) REFERENCES genera(id)
|
FOREIGN KEY (genus_id) REFERENCES genera(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE INDEX genus_id_idx ON species (genus_id);
|
||||||
|
|
||||||
|
|
|
@ -6,16 +6,18 @@ CREATE TABLE strains (
|
||||||
species_id BIGINT NOT NULL,
|
species_id BIGINT NOT NULL,
|
||||||
strain_name CHARACTER VARYING(100) NOT NULL,
|
strain_name CHARACTER VARYING(100) NOT NULL,
|
||||||
strain_type CHARACTER VARYING(100) NOT NULL,
|
strain_type CHARACTER VARYING(100) NOT NULL,
|
||||||
etymology CHARACTER VARYING(500),
|
etymology CHARACTER VARYING(500) NULL,
|
||||||
accession_banks CHARACTER VARYING(100),
|
accession_banks CHARACTER VARYING(100) NULL,
|
||||||
genbank_embl_ddb CHARACTER VARYING(100),
|
genbank_embl_ddb CHARACTER VARYING(100) NULL,
|
||||||
isolated_from CHARACTER VARYING(100),
|
isolated_from CHARACTER VARYING(100) NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||||
|
|
||||||
CONSTRAINT strain_pkey PRIMARY KEY (id),
|
CONSTRAINT strain_pkey PRIMARY KEY (id),
|
||||||
FOREIGN KEY (species_id) REFERENCES species(id)
|
FOREIGN KEY (species_id) REFERENCES species(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE INDEX species_id_idx ON strains (species_id);
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
|
|
||||||
CREATE TABLE observation_types (
|
CREATE TABLE observation_types (
|
||||||
id BIGSERIAL NOT NULL,
|
id BIGSERIAL NOT NULL,
|
||||||
observation_type_name CHARACTER VARYING(100),
|
observation_type_name CHARACTER VARYING(100) NOT NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||||
|
|
||||||
CONSTRAINT observation_types_pkey PRIMARY KEY (id)
|
CONSTRAINT observation_types_pkey PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
|
|
|
@ -3,14 +3,16 @@
|
||||||
|
|
||||||
CREATE TABLE observations (
|
CREATE TABLE observations (
|
||||||
id BIGSERIAL NOT NULL,
|
id BIGSERIAL NOT NULL,
|
||||||
observation_name CHARACTER VARYING(100),
|
observation_name CHARACTER VARYING(100) NOT NULL,
|
||||||
observation_type_id BIGINT,
|
observation_type_id BIGINT NOT NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||||
|
|
||||||
CONSTRAINT observations_pkey PRIMARY KEY (id),
|
CONSTRAINT observations_pkey PRIMARY KEY (id),
|
||||||
FOREIGN KEY (observation_type_id) REFERENCES observation_types(id)
|
FOREIGN KEY (observation_type_id) REFERENCES observation_types(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE INDEX observation_type_id_idx ON observations (observation_type_id);
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
|
|
||||||
CREATE TABLE text_measurement_types (
|
CREATE TABLE text_measurement_types (
|
||||||
id BIGSERIAL NOT NULL,
|
id BIGSERIAL NOT NULL,
|
||||||
text_measurement_name CHARACTER VARYING(100),
|
text_measurement_name CHARACTER VARYING(100) NOT NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||||
|
|
||||||
CONSTRAINT text_measurements_pkey PRIMARY KEY (id)
|
CONSTRAINT text_measurements_pkey PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
|
|
||||||
CREATE TABLE unit_types (
|
CREATE TABLE unit_types (
|
||||||
id BIGSERIAL NOT NULL,
|
id BIGSERIAL NOT NULL,
|
||||||
name CHARACTER VARYING(100),
|
name CHARACTER VARYING(100) NOT NULL,
|
||||||
symbol CHARACTER VARYING(10),
|
symbol CHARACTER VARYING(10) NOT NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||||
|
|
||||||
CONSTRAINT unit_types_pkey PRIMARY KEY (id)
|
CONSTRAINT unit_types_pkey PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
CREATE TABLE measurements (
|
CREATE TABLE measurements (
|
||||||
id BIGSERIAL NOT NULL,
|
id BIGSERIAL NOT NULL,
|
||||||
strain_id BIGINT,
|
strain_id BIGINT NOT NULL,
|
||||||
observation_id BIGINT,
|
observation_id BIGINT NOT NULL,
|
||||||
text_measurement_type_id BIGINT NULL,
|
text_measurement_type_id BIGINT NULL,
|
||||||
txt_value CHARACTER VARYING(255) NULL,
|
txt_value CHARACTER VARYING(255) NULL,
|
||||||
num_value NUMERIC(8, 3) NULL,
|
num_value NUMERIC(8, 3) NULL,
|
||||||
|
@ -12,8 +12,8 @@ CREATE TABLE measurements (
|
||||||
unit_type_id BIGINT NULL,
|
unit_type_id BIGINT NULL,
|
||||||
notes CHARACTER VARYING(255) NULL,
|
notes CHARACTER VARYING(255) NULL,
|
||||||
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE,
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
updated_at TIMESTAMP WITH TIME ZONE,
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||||
|
|
||||||
CONSTRAINT strainsobsmeasurements_pkey PRIMARY KEY (id),
|
CONSTRAINT strainsobsmeasurements_pkey PRIMARY KEY (id),
|
||||||
FOREIGN KEY (strain_id) REFERENCES strains(id),
|
FOREIGN KEY (strain_id) REFERENCES strains(id),
|
||||||
|
@ -38,3 +38,11 @@ CREATE TABLE measurements (
|
||||||
AND unit_type_id IS NULL))
|
AND unit_type_id IS NULL))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE INDEX strain_id_idx ON measurements (strain_id);
|
||||||
|
|
||||||
|
CREATE INDEX observation_id_idx ON measurements (observation_id);
|
||||||
|
|
||||||
|
CREATE INDEX text_measurement_type_id_idx ON measurements (text_measurement_type_id);
|
||||||
|
|
||||||
|
CREATE INDEX unit_type_id_idx ON measurements (unit_type_id);
|
||||||
|
|
||||||
|
|
Reference in a new issue