From b15eb217efb10de62395110670c562e68ecf87ed Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Wed, 3 Dec 2014 14:59:59 -0900 Subject: [PATCH] Explicit schema + FK indices. --- datastore/migrations/00001_AddUsers_up.sql | 8 ++++---- datastore/migrations/00002_AddGenera_up.sql | 13 ++++--------- datastore/migrations/00003_AddSpecies_up.sql | 11 +++++++---- datastore/migrations/00004_AddStrain_up.sql | 16 +++++++++------- .../migrations/00005_AddObservationTypes_up.sql | 8 ++++---- .../migrations/00006_AddObservations_up.sql | 12 +++++++----- .../00007_AddText_Measurement_Types_up.sql | 8 ++++---- datastore/migrations/00008_AddUnit_Types_up.sql | 10 +++++----- .../migrations/00009_AddMeasurements_up.sql | 16 ++++++++++++---- 9 files changed, 56 insertions(+), 46 deletions(-) diff --git a/datastore/migrations/00001_AddUsers_up.sql b/datastore/migrations/00001_AddUsers_up.sql index 4ef446a..b63a3a7 100644 --- a/datastore/migrations/00001_AddUsers_up.sql +++ b/datastore/migrations/00001_AddUsers_up.sql @@ -3,11 +3,11 @@ CREATE TABLE users ( id BIGSERIAL NOT NULL, - username CHARACTER VARYING(100), + username CHARACTER VARYING(100) NOT NULL, - created_at TIMESTAMP WITH TIME ZONE, - updated_at TIMESTAMP WITH TIME ZONE, - deleted_at TIMESTAMP WITH TIME ZONE, + 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) ); diff --git a/datastore/migrations/00002_AddGenera_up.sql b/datastore/migrations/00002_AddGenera_up.sql index e9ea156..00ca780 100644 --- a/datastore/migrations/00002_AddGenera_up.sql +++ b/datastore/migrations/00002_AddGenera_up.sql @@ -3,17 +3,12 @@ CREATE TABLE genera ( id BIGSERIAL NOT NULL, - genus_name CHARACTER VARYING(100), + genus_name CHARACTER VARYING(100) NOT NULL, - created_at TIMESTAMP WITH TIME ZONE, - updated_at TIMESTAMP WITH TIME ZONE, - deleted_at TIMESTAMP WITH TIME ZONE, + 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) ); -CREATE UNIQUE INDEX genusname_idx - ON genera - USING btree - (genus_name COLLATE pg_catalog."default"); - diff --git a/datastore/migrations/00003_AddSpecies_up.sql b/datastore/migrations/00003_AddSpecies_up.sql index 88a192a..a44c57f 100644 --- a/datastore/migrations/00003_AddSpecies_up.sql +++ b/datastore/migrations/00003_AddSpecies_up.sql @@ -4,12 +4,15 @@ CREATE TABLE species ( id BIGSERIAL 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, - updated_at TIMESTAMP WITH TIME ZONE, - deleted_at TIMESTAMP WITH TIME ZONE, + 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); + diff --git a/datastore/migrations/00004_AddStrain_up.sql b/datastore/migrations/00004_AddStrain_up.sql index a9ed6e0..42cd34b 100644 --- a/datastore/migrations/00004_AddStrain_up.sql +++ b/datastore/migrations/00004_AddStrain_up.sql @@ -6,16 +6,18 @@ CREATE TABLE strains ( species_id BIGINT NOT NULL, strain_name CHARACTER VARYING(100) NOT NULL, strain_type CHARACTER VARYING(100) NOT NULL, - etymology CHARACTER VARYING(500), - accession_banks CHARACTER VARYING(100), - genbank_embl_ddb CHARACTER VARYING(100), - isolated_from CHARACTER VARYING(100), + 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, - updated_at TIMESTAMP WITH TIME ZONE, - deleted_at TIMESTAMP WITH TIME ZONE, + 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); + diff --git a/datastore/migrations/00005_AddObservationTypes_up.sql b/datastore/migrations/00005_AddObservationTypes_up.sql index d18d8b5..d96fe85 100644 --- a/datastore/migrations/00005_AddObservationTypes_up.sql +++ b/datastore/migrations/00005_AddObservationTypes_up.sql @@ -3,11 +3,11 @@ CREATE TABLE observation_types ( id BIGSERIAL NOT NULL, - observation_type_name CHARACTER VARYING(100), + observation_type_name CHARACTER VARYING(100) NOT NULL, - created_at TIMESTAMP WITH TIME ZONE, - updated_at TIMESTAMP WITH TIME ZONE, - deleted_at TIMESTAMP WITH TIME ZONE, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL, + deleted_at TIMESTAMP WITH TIME ZONE NULL, CONSTRAINT observation_types_pkey PRIMARY KEY (id) ); diff --git a/datastore/migrations/00006_AddObservations_up.sql b/datastore/migrations/00006_AddObservations_up.sql index df0a1be..0a21b64 100644 --- a/datastore/migrations/00006_AddObservations_up.sql +++ b/datastore/migrations/00006_AddObservations_up.sql @@ -3,14 +3,16 @@ CREATE TABLE observations ( id BIGSERIAL NOT NULL, - observation_name CHARACTER VARYING(100), - observation_type_id BIGINT, + observation_name CHARACTER VARYING(100) NOT NULL, + observation_type_id BIGINT NOT NULL, - created_at TIMESTAMP WITH TIME ZONE, - updated_at TIMESTAMP WITH TIME ZONE, - deleted_at TIMESTAMP WITH TIME ZONE, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL, + deleted_at TIMESTAMP WITH TIME ZONE NULL, CONSTRAINT observations_pkey PRIMARY KEY (id), FOREIGN KEY (observation_type_id) REFERENCES observation_types(id) ); +CREATE INDEX observation_type_id_idx ON observations (observation_type_id); + diff --git a/datastore/migrations/00007_AddText_Measurement_Types_up.sql b/datastore/migrations/00007_AddText_Measurement_Types_up.sql index 1f65741..99e16a6 100644 --- a/datastore/migrations/00007_AddText_Measurement_Types_up.sql +++ b/datastore/migrations/00007_AddText_Measurement_Types_up.sql @@ -3,11 +3,11 @@ CREATE TABLE text_measurement_types ( id BIGSERIAL NOT NULL, - text_measurement_name CHARACTER VARYING(100), + text_measurement_name CHARACTER VARYING(100) NOT NULL, - created_at TIMESTAMP WITH TIME ZONE, - updated_at TIMESTAMP WITH TIME ZONE, - deleted_at TIMESTAMP WITH TIME ZONE, + 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) ); diff --git a/datastore/migrations/00008_AddUnit_Types_up.sql b/datastore/migrations/00008_AddUnit_Types_up.sql index 348242a..d8b5f7d 100644 --- a/datastore/migrations/00008_AddUnit_Types_up.sql +++ b/datastore/migrations/00008_AddUnit_Types_up.sql @@ -3,12 +3,12 @@ CREATE TABLE unit_types ( id BIGSERIAL NOT NULL, - name CHARACTER VARYING(100), - symbol CHARACTER VARYING(10), + name CHARACTER VARYING(100) NOT NULL, + symbol CHARACTER VARYING(10) NOT NULL, - created_at TIMESTAMP WITH TIME ZONE, - updated_at TIMESTAMP WITH TIME ZONE, - deleted_at TIMESTAMP WITH TIME ZONE, + 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) ); diff --git a/datastore/migrations/00009_AddMeasurements_up.sql b/datastore/migrations/00009_AddMeasurements_up.sql index 51daf36..be5d107 100644 --- a/datastore/migrations/00009_AddMeasurements_up.sql +++ b/datastore/migrations/00009_AddMeasurements_up.sql @@ -3,8 +3,8 @@ CREATE TABLE measurements ( id BIGSERIAL NOT NULL, - strain_id BIGINT, - observation_id BIGINT, + strain_id BIGINT NOT NULL, + observation_id BIGINT NOT NULL, text_measurement_type_id BIGINT NULL, txt_value CHARACTER VARYING(255) NULL, num_value NUMERIC(8, 3) NULL, @@ -12,8 +12,8 @@ CREATE TABLE measurements ( unit_type_id BIGINT NULL, notes CHARACTER VARYING(255) NULL, - created_at TIMESTAMP WITH TIME ZONE, - updated_at TIMESTAMP WITH TIME ZONE, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT strainsobsmeasurements_pkey PRIMARY KEY (id), FOREIGN KEY (strain_id) REFERENCES strains(id), @@ -38,3 +38,11 @@ CREATE TABLE measurements ( 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); +