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
	
	 Matthew Dillon
						Matthew Dillon