Rebooting

This commit is contained in:
Matthew Dillon 2015-03-20 15:52:29 -08:00
parent 41ee2857ee
commit 6030310caa
149 changed files with 1489 additions and 9755 deletions

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE users;

View file

@ -0,0 +1,20 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE users (
id BIGSERIAL NOT NULL,
username CHARACTER VARYING(100) NOT NULL,
password CHARACTER VARYING(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT users_pkey PRIMARY KEY (id)
);
CREATE UNIQUE INDEX username_idx
ON users
USING btree
(username COLLATE pg_catalog."default");

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE genera;

View file

@ -0,0 +1,14 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE genera (
id BIGSERIAL NOT NULL,
genus_name CHARACTER VARYING(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT genus_pkey PRIMARY KEY (id)
);

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE species;

View file

@ -0,0 +1,18 @@
-- bactdb
-- Matthew Dillon
CREATE TABLE species (
id BIGSERIAL NOT NULL,
genus_id BIGINT NOT NULL,
species_name CHARACTER VARYING(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT species_pkey PRIMARY KEY (id),
FOREIGN KEY (genus_id) REFERENCES genera(id)
);
CREATE INDEX genus_id_idx ON species (genus_id);

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE strains;

View file

@ -0,0 +1,23 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE strains (
id BIGSERIAL NOT NULL,
species_id BIGINT NOT NULL,
strain_name CHARACTER VARYING(100) NOT NULL,
strain_type CHARACTER VARYING(100) NOT NULL,
etymology CHARACTER VARYING(500) NULL,
accession_banks CHARACTER VARYING(100) NULL,
genbank_embl_ddb CHARACTER VARYING(100) NULL,
isolated_from CHARACTER VARYING(100) NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT strain_pkey PRIMARY KEY (id),
FOREIGN KEY (species_id) REFERENCES species(id)
);
CREATE INDEX species_id_idx ON strains (species_id);

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE characteristic_types;

View file

@ -0,0 +1,14 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE characteristic_types (
id BIGSERIAL NOT NULL,
characteristic_type_name CHARACTER VARYING(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT characteristic_types_pkey PRIMARY KEY (id)
);

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE characteristics;

View file

@ -0,0 +1,18 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE characteristics (
id BIGSERIAL NOT NULL,
characteristic_name CHARACTER VARYING(100) NOT NULL,
characteristic_type_id BIGINT NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT characteristics_pkey PRIMARY KEY (id),
FOREIGN KEY (characteristic_type_id) REFERENCES characteristic_types(id)
);
CREATE INDEX characteristic_type_id_idx ON characteristics (characteristic_type_id);

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE text_measurement_types;

View file

@ -0,0 +1,14 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE text_measurement_types (
id BIGSERIAL NOT NULL,
text_measurement_name CHARACTER VARYING(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT text_measurements_pkey PRIMARY KEY (id)
);

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE unit_types;

View file

@ -0,0 +1,15 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE unit_types (
id BIGSERIAL NOT NULL,
name CHARACTER VARYING(100) NOT NULL,
symbol CHARACTER VARYING(10) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT unit_types_pkey PRIMARY KEY (id)
);

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE test_methods;

View file

@ -0,0 +1,14 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE test_methods (
id BIGSERIAL NOT NULL,
name CHARACTER VARYING(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT test_methods_pkey PRIMARY KEY (id)
);

View file

@ -0,0 +1,5 @@
-- bactdb
-- Matthew R Dillon
DROP TABLE measurements;

View file

@ -0,0 +1,52 @@
-- bactdb
-- Matthew R Dillon
CREATE TABLE measurements (
id BIGSERIAL NOT NULL,
strain_id BIGINT NOT NULL,
characteristic_id BIGINT NOT NULL,
text_measurement_type_id BIGINT NULL,
txt_value CHARACTER VARYING(255) NULL,
num_value NUMERIC(8, 3) NULL,
confidence_interval NUMERIC(8, 3) NULL,
unit_type_id BIGINT NULL,
notes CHARACTER VARYING(255) NULL,
test_method_id BIGINT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
CONSTRAINT strainscharmeasurements_pkey PRIMARY KEY (id),
FOREIGN KEY (strain_id) REFERENCES strains(id),
FOREIGN KEY (characteristic_id) REFERENCES characteristics(id),
FOREIGN KEY (text_measurement_type_id) REFERENCES text_measurement_types(id),
FOREIGN KEY (unit_type_id) REFERENCES unit_types(id),
FOREIGN KEY (test_method_id) REFERENCES test_methods(id),
CONSTRAINT exclusive_data_type CHECK (
(text_measurement_type_id IS NOT NULL
AND txt_value IS NULL
AND num_value IS NULL
AND confidence_interval IS NULL
AND unit_type_id IS NULL)
OR
(text_measurement_type_id IS NULL
AND txt_value IS NULL
AND num_value IS NOT NULL)
OR
(text_measurement_type_id IS NULL
AND txt_value IS NOT NULL
AND num_value IS NULL
AND confidence_interval IS NULL
AND unit_type_id IS NULL))
);
CREATE INDEX strain_id_idx ON measurements (strain_id);
CREATE INDEX characteristic_id_idx ON measurements (characteristic_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);
CREATE INDEX test_method_id_idx ON measurements (test_method_id);