# HG changeset patch # User mschaefer # Date 1520930561 -3600 # Node ID 71b17f73176218ca72dff6c36d73bccb1e9edf33 # Parent a9950a3a71e514e3aa376816eddc207384dacce6 Same data types, precision and scale as in Oracle (as far as possible) diff -r a9950a3a71e5 -r 71b17f731762 backend/doc/schema/postgresql-minfo.sql --- a/backend/doc/schema/postgresql-minfo.sql Wed Mar 07 17:36:04 2018 +0100 +++ b/backend/doc/schema/postgresql-minfo.sql Tue Mar 13 09:42:41 2018 +0100 @@ -3,7 +3,7 @@ CREATE SEQUENCE LOCATION_SYSTEM_SEQ; CREATE TABLE location_system ( - id int NOT NULL, + id NUMERIC(9,0) NOT NULL, name VARCHAR(32) NOT NULL, description VARCHAR(255), PRIMARY KEY(id) @@ -13,9 +13,9 @@ CREATE SEQUENCE ELEVATION_MODEL_SEQ; CREATE TABLE elevation_model ( - id int NOT NULL, + id NUMERIC(9,0) NOT NULL, name VARCHAR(32) NOT NULL, - unit_id int NOT NULL, + unit_id NUMERIC(9,0) NOT NULL, PRIMARY KEY(id), CONSTRAINT fk_unit FOREIGN KEY (unit_id) REFERENCES units(id) ); @@ -23,7 +23,7 @@ -- lookup table for bedheight types CREATE TABLE bed_height_type ( - id int NOT NULL, + id NUMERIC(9,0) NOT NULL, name VARCHAR(64) NOT NULL, PRIMARY KEY(id) ); @@ -38,14 +38,14 @@ CREATE SEQUENCE BED_HEIGHT_ID_SEQ; CREATE TABLE bed_height ( - id int NOT NULL, - river_id int NOT NULL, - year int, - type_id int NOT NULL, - location_system_id int NOT NULL, - cur_elevation_model_id int NOT NULL, - old_elevation_model_id int, - range_id int, + id NUMERIC(9,0) NOT NULL, + river_id NUMERIC(9,0) NOT NULL, + year NUMERIC(9,0), + type_id NUMERIC(9,0) NOT NULL, + location_system_id NUMERIC(9,0) NOT NULL, + cur_elevation_model_id NUMERIC(9,0) NOT NULL, + old_elevation_model_id NUMERIC(9,0), + range_id NUMERIC(9,0), evaluation_by VARCHAR(255), description VARCHAR(255), PRIMARY KEY(id), @@ -65,14 +65,16 @@ CREATE SEQUENCE BED_HEIGHT_VALUES_ID_SEQ; +--FIXME: make precision and scale of station column equal with the km columns of the other tables +--FIXME: replace double precision with exact types CREATE TABLE bed_height_values ( - id int NOT NULL, - bed_height_id int NOT NULL, - station NUMERIC NOT NULL, - height NUMERIC, - uncertainty NUMERIC, - data_gap NUMERIC, - sounding_width NUMERIC, + id NUMERIC(9,0) NOT NULL, + bed_height_id NUMERIC(9,0) NOT NULL, + station DOUBLE PRECISION NOT NULL, + height DOUBLE PRECISION, + uncertainty DOUBLE PRECISION, + data_gap DOUBLE PRECISION, + sounding_width DOUBLE PRECISION, PRIMARY KEY(id), UNIQUE (station, bed_height_id), CONSTRAINT fk_bed_values_parent FOREIGN KEY (bed_height_id) @@ -83,9 +85,9 @@ CREATE SEQUENCE DEPTHS_ID_SEQ; CREATE TABLE depths ( - id int NOT NULL, - lower NUMERIC NOT NULL, - upper NUMERIC NOT NULL, + id NUMERIC(9,0) NOT NULL, + lower NUMERIC(6,2) NOT NULL, + upper NUMERIC(6,2) NOT NULL, PRIMARY KEY(id) ); @@ -93,9 +95,9 @@ CREATE SEQUENCE SEDIMENT_DENSITY_ID_SEQ; CREATE TABLE sediment_density ( - id int NOT NULL, - river_id int NOT NULL, - depth_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + river_id NUMERIC(9,0) NOT NULL, + depth_id NUMERIC(9,0) NOT NULL, description VARCHAR(256), PRIMARY KEY(id), CONSTRAINT fk_sd_river_id FOREIGN KEY (river_id) REFERENCES rivers(id) ON DELETE CASCADE, @@ -105,14 +107,15 @@ CREATE SEQUENCE SEDIMENT_DENSITY_VALUES_ID_SEQ; +--FIXME: make precision and scale of station column equal with the km columns of the other tables CREATE TABLE sediment_density_values ( - id int NOT NULL, - sediment_density_id int NOT NULL, - station NUMERIC NOT NULL, - shore_offset NUMERIC, - density NUMERIC NOT NULL, + id NUMERIC(9,0) NOT NULL, + sediment_density_id NUMERIC(9,0) NOT NULL, + station NUMERIC(6,2) NOT NULL, + shore_offset NUMERIC(6,2), + density NUMERIC(8,2) NOT NULL, description VARCHAR(256), - year int, + year NUMERIC(4,0), PRIMARY KEY(id), CONSTRAINT fk_sdv_sediment_density_id FOREIGN KEY(sediment_density_id) REFERENCES sediment_density(id) ON DELETE CASCADE ); @@ -121,11 +124,11 @@ CREATE SEQUENCE POROSITY_ID_SEQ; CREATE TABLE porosity ( - id int NOT NULL, - river_id int NOT NULL, - depth_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + river_id NUMERIC(9,0) NOT NULL, + depth_id NUMERIC(9,0) NOT NULL, description VARCHAR(256), - time_interval_id int NOT NULL, + time_interval_id NUMERIC(9,0) NOT NULL, PRIMARY KEY(id), CONSTRAINT fk_p_river_id FOREIGN KEY (river_id) REFERENCES rivers(id) ON DELETE CASCADE, CONSTRAINT fk_p_depth_id FOREIGN KEY (depth_id) REFERENCES depths(id), @@ -135,12 +138,13 @@ CREATE SEQUENCE POROSITY_VALUES_ID_SEQ; +--FIXME: make precision and scale of station column equal with the km columns of the other tables CREATE TABLE porosity_values ( - id int NOT NULL, - porosity_id int NOT NULL, - station NUMERIC NOT NULL, - shore_offset NUMERIC, - porosity NUMERIC NOT NULL, + id NUMERIC(9,0) NOT NULL, + porosity_id NUMERIC(9,0) NOT NULL, + station DOUBLE PRECISION NOT NULL, + shore_offset DOUBLE PRECISION, + porosity DOUBLE PRECISION NOT NULL, description VARCHAR(256), PRIMARY KEY(id), CONSTRAINT fk_pv_porosity_id FOREIGN KEY(porosity_id) REFERENCES porosity(id) ON DELETE CASCADE @@ -150,9 +154,9 @@ CREATE SEQUENCE MORPHOLOGIC_WIDTH_ID_SEQ; CREATE TABLE morphologic_width ( - id int NOT NULL, - river_id int NOT NULL, - unit_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + river_id NUMERIC(9,0) NOT NULL, + unit_id NUMERIC(9,0) NOT NULL, PRIMARY KEY(id), CONSTRAINT fk_mw_river_id FOREIGN KEY(river_id) REFERENCES rivers(id) ON DELETE CASCADE, CONSTRAINT fk_mw_unit_id FOREIGN KEY(unit_id) REFERENCES units(id) @@ -162,10 +166,10 @@ CREATE SEQUENCE MORPH_WIDTH_VALUES_ID_SEQ; CREATE TABLE morphologic_width_values ( - id int NOT NULL, - morphologic_width_id int NOT NULL, - station NUMERIC NOT NULL, - width NUMERIC NOT NULL, + id NUMERIC(9,0) NOT NULL, + morphologic_width_id NUMERIC(9,0) NOT NULL, + station NUMERIC(7,3) NOT NULL, + width NUMERIC(7,3) NOT NULL, description VARCHAR(256), PRIMARY KEY(id), CONSTRAINT fk_mwv_morphologic_width_id FOREIGN KEY (morphologic_width_id) REFERENCES morphologic_width(id) ON DELETE CASCADE @@ -175,10 +179,10 @@ CREATE SEQUENCE DISCHARGE_ZONE_ID_SEQ; CREATE TABLE discharge_zone ( - id int NOT NULL, - river_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + river_id NUMERIC(9,0) NOT NULL, gauge_name VARCHAR(64) NOT NULL, -- this is not very proper, but there are gauges with no db instance - value NUMERIC NOT NULL, + value NUMERIC(8,3) NOT NULL, lower_discharge VARCHAR(64) NOT NULL, upper_discharge VARCHAR(64), PRIMARY KEY(id), @@ -189,8 +193,8 @@ CREATE SEQUENCE FLOW_VELOCITY_MODEL_ID_SEQ; CREATE TABLE flow_velocity_model ( - id int NOT NULL, - discharge_zone_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + discharge_zone_id NUMERIC(9,0) NOT NULL, description VARCHAR(256), PRIMARY KEY (id), CONSTRAINT fk_fvm_discharge_zone_id FOREIGN KEY (discharge_zone_id) REFERENCES discharge_zone (id) ON DELETE CASCADE @@ -200,13 +204,13 @@ CREATE SEQUENCE FLOW_VELOCITY_M_VALUES_ID_SEQ; CREATE TABLE flow_velocity_model_values ( - id int NOT NULL, - flow_velocity_model_id int NOT NULL, - station NUMERIC NOT NULL, - q NUMERIC NOT NULL, - total_channel NUMERIC NOT NULL, - main_channel NUMERIC NOT NULL, - shear_stress NUMERIC NOT NULL, + id NUMERIC(9,0) NOT NULL, + flow_velocity_model_id NUMERIC(9,0) NOT NULL, + station NUMERIC(7,3) NOT NULL, + q NUMERIC(8,3) NOT NULL, + total_channel NUMERIC(5,3) NOT NULL, + main_channel NUMERIC(5,3) NOT NULL, + shear_stress NUMERIC(6,3) NOT NULL, PRIMARY KEY(id), UNIQUE (station, flow_velocity_model_id), CONSTRAINT fk_fvv_flow_velocity_model_id FOREIGN KEY (flow_velocity_model_id) REFERENCES flow_velocity_model(id) ON DELETE CASCADE @@ -217,8 +221,8 @@ CREATE SEQUENCE FV_MEASURE_ID_SEQ; CREATE TABLE flow_velocity_measurements ( - id int NOT NULL, - river_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + river_id NUMERIC(9,0) NOT NULL, description VARCHAR(256), PRIMARY KEY (id), CONSTRAINT fk_fvm_rivers_id FOREIGN KEY (river_id) REFERENCES rivers(id) ON DELETE CASCADE @@ -227,13 +231,13 @@ CREATE SEQUENCE FV_MEASURE_VALUES_ID_SEQ; CREATE TABLE flow_velocity_measure_values ( - id int NOT NULL, - measurements_id int NOT NULL, - station NUMERIC NOT NULL, - datetime TIMESTAMP, - w NUMERIC NOT NULL, - q NUMERIC NOT NULL, - v NUMERIC NOT NULL, + id NUMERIC(9,0) NOT NULL, + measurements_id NUMERIC(9,0) NOT NULL, + station NUMERIC(7,3) NOT NULL, + datetime TIMESTAMP(0), + w NUMERIC(7,3) NOT NULL, + q NUMERIC(8,3) NOT NULL, + v NUMERIC(5,3) NOT NULL, description VARCHAR(256), PRIMARY KEY (id), CONSTRAINT fk_fvmv_measurements_id FOREIGN KEY (measurements_id) REFERENCES flow_velocity_measurements (id) ON DELETE CASCADE @@ -243,10 +247,10 @@ CREATE SEQUENCE GRAIN_FRACTION_ID_SEQ; CREATE TABLE grain_fraction ( - id int NOT NULL, + id NUMERIC(9,0) NOT NULL, name VARCHAR(64) NOT NULL, - lower NUMERIC, - upper NUMERIC, + lower NUMERIC(6,3), + upper NUMERIC(6,3), PRIMARY KEY (id), UNIQUE(name, lower, upper) ); @@ -265,7 +269,7 @@ --lookup table for sediment load kinds CREATE TABLE sediment_load_kinds ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, kind VARCHAR(64) NOT NULL ); INSERT INTO sediment_load_kinds (id, kind) VALUES (0, 'non-official'); @@ -274,14 +278,14 @@ CREATE SEQUENCE SEDIMENT_LOAD_LS_ID_SEQ; CREATE TABLE sediment_load_ls ( - id int NOT NULL, - river_id int NOT NULL, - grain_fraction_id int, - unit_id int NOT NULL, - time_interval_id int NOT NULL, - sq_time_interval_id int, + id NUMERIC(9,0) NOT NULL, + river_id NUMERIC(9,0) NOT NULL, + grain_fraction_id NUMERIC(9,0), + unit_id NUMERIC(9,0) NOT NULL, + time_interval_id NUMERIC(9,0) NOT NULL, + sq_time_interval_id NUMERIC(9,0), description VARCHAR(256), - kind int, + kind NUMERIC(9,0), PRIMARY KEY (id), CONSTRAINT fk_slls_river_id FOREIGN KEY (river_id) REFERENCES rivers(id) ON DELETE CASCADE, @@ -301,10 +305,10 @@ CREATE SEQUENCE SEDIMENT_LOAD_LS_VALUES_ID_SEQ; CREATE TABLE sediment_load_ls_values ( - id int NOT NULL, - sediment_load_ls_id int NOT NULL, - station NUMERIC NOT NULL, - value NUMERIC NOT NULL, + id NUMERIC(9,0) NOT NULL, + sediment_load_ls_id NUMERIC(9,0) NOT NULL, + station NUMERIC(7,3) NOT NULL, + value NUMERIC(10,3) NOT NULL, PRIMARY KEY (id), CONSTRAINT fk_sllsv_sediment_load_ls_id FOREIGN KEY (sediment_load_ls_id) REFERENCES sediment_load_ls(id) ON DELETE CASCADE @@ -313,10 +317,10 @@ CREATE SEQUENCE MEASUREMENT_STATION_ID_SEQ; CREATE TABLE measurement_station ( - id int NOT NULL, - range_id int NOT NULL, - reference_gauge_id int, - time_interval_id int, + id NUMERIC(9,0) NOT NULL, + range_id NUMERIC(9,0) NOT NULL, + reference_gauge_id NUMERIC(9,0), + time_interval_id NUMERIC(9,0), name VARCHAR(256) NOT NULL, measurement_type VARCHAR(64) NOT NULL, riverside VARCHAR(16), @@ -338,12 +342,12 @@ CREATE SEQUENCE SEDIMENT_LOAD_ID_SEQ; CREATE TABLE sediment_load ( - id int NOT NULL, - grain_fraction_id int NOT NULL, - time_interval_id int NOT NULL, - sq_time_interval_id int, + id NUMERIC(9,0) NOT NULL, + grain_fraction_id NUMERIC(9,0) NOT NULL, + time_interval_id NUMERIC(9,0) NOT NULL, + sq_time_interval_id NUMERIC(9,0), description VARCHAR(256), - kind int, + kind NUMERIC(9,0), PRIMARY KEY (id), CONSTRAINT fk_sl_kind_id FOREIGN KEY (kind) REFERENCES sediment_load_kinds(id), @@ -359,9 +363,9 @@ CREATE SEQUENCE SEDIMENT_LOAD_VALUES_ID_SEQ; CREATE TABLE sediment_load_values ( - id int NOT NULL, - sediment_load_id int NOT NULL, - measurement_station_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + sediment_load_id NUMERIC(9,0) NOT NULL, + measurement_station_id NUMERIC(9,0) NOT NULL, value DOUBLE PRECISION NOT NULL, PRIMARY KEY (id), CONSTRAINT fk_slv_sediment_load_id FOREIGN KEY (sediment_load_id) @@ -374,8 +378,8 @@ CREATE SEQUENCE SQ_RELATION_ID_SEQ; CREATE TABLE sq_relation ( - id int NOT NULL, - time_interval_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + time_interval_id NUMERIC(9,0) NOT NULL, description VARCHAR(256), PRIMARY KEY (id), CONSTRAINT fk_sqr_tinterval_id FOREIGN KEY (time_interval_id) @@ -385,19 +389,20 @@ CREATE SEQUENCE SQ_RELATION_VALUES_ID_SEQ; +--FIXME: adjust precision and scale of the numerics CREATE TABLE sq_relation_value ( - id int NOT NULL, - sq_relation_id int NOT NULL, - measurement_station_id int NOT NULL, + id NUMERIC(9,0) NOT NULL, + sq_relation_id NUMERIC(9,0) NOT NULL, + measurement_station_id NUMERIC(9,0) NOT NULL, parameter VARCHAR(1) NOT NULL, - a NUMERIC NOT NULL, - b NUMERIC NOT NULL, - qmax NUMERIC NOT NULL, - rsq NUMERIC, - ntot int, - noutl int, - cferguson NUMERIC, - cduan NUMERIC, + a NUMERIC(38,20) NOT NULL, + b NUMERIC(38,20) NOT NULL, + qmax NUMERIC(38,20) NOT NULL, + rsq NUMERIC(38,3), + ntot NUMERIC(9,0), + noutl NUMERIC(9,0), + cferguson NUMERIC(38,20), + cduan NUMERIC(38,20), PRIMARY KEY (id), UNIQUE(sq_relation_id, measurement_station_id, parameter), CONSTRAINT fk_sqr_id FOREIGN KEY (sq_relation_id) diff -r a9950a3a71e5 -r 71b17f731762 backend/doc/schema/postgresql-spatial.sql --- a/backend/doc/schema/postgresql-spatial.sql Wed Mar 07 17:36:04 2018 +0100 +++ b/backend/doc/schema/postgresql-spatial.sql Tue Mar 13 09:42:41 2018 +0100 @@ -1,7 +1,10 @@ BEGIN; +--FIXME: Adjust precision and scale to reasonable numbers +--FIXME: Make precision and scale equal for all km columns in the database + CREATE TABLE axis_kinds( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(64) ); INSERT INTO axis_kinds(id, name) VALUES (0, 'Unbekannt'); @@ -11,9 +14,9 @@ -- Geodaesie/Flussachse+km/achse CREATE SEQUENCE RIVER_AXES_ID_SEQ; CREATE TABLE river_axes ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, - kind_id int REFERENCES axis_kinds(id) NOT NULL DEFAULT 0, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, + kind_id NUMERIC(9,0) REFERENCES axis_kinds(id) NOT NULL DEFAULT 0, name VARCHAR(64), path VARCHAR(256) ); @@ -25,10 +28,10 @@ -- Geodaesie/Flussachse+km/km.shp CREATE SEQUENCE RIVER_AXES_KM_ID_SEQ; CREATE TABLE river_axes_km ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, - km FLOAT8 NOT NULL, - fedstate_km FLOAT8, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, + km NUMERIC(7,3) NOT NULL, + fedstate_km NUMERIC(7,3), name VARCHAR(64), path VARCHAR(256) ); @@ -38,7 +41,7 @@ --Geodaesie/Querprofile/QP-Spuren/qps.shp CREATE TABLE cross_section_track_kinds( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(64) ); INSERT INTO cross_section_track_kinds(id, name) VALUES (0, 'Sonstige'); @@ -46,11 +49,11 @@ CREATE SEQUENCE CROSS_SECTION_TRACKS_ID_SEQ; CREATE TABLE cross_section_tracks ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, - kind_id int REFERENCES cross_section_track_kinds(id) NOT NULL DEFAULT 0, - km FLOAT8 NOT NULL, - z FLOAT8 NOT NULL DEFAULT 0, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, + kind_id NUMERIC(9,0) REFERENCES cross_section_track_kinds(id) NOT NULL DEFAULT 0, + km NUMERIC(16,12) NOT NULL, + z NUMERIC(16,12) NOT NULL DEFAULT 0, name VARCHAR(64), path VARCHAR(256) ); @@ -58,7 +61,7 @@ ALTER TABLE cross_section_tracks ALTER COLUMN id SET DEFAULT NEXTVAL('CROSS_SECTION_TRACKS_ID_SEQ'); CREATE TABLE building_kinds( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(64) ); INSERT INTO building_kinds(id, name) VALUES (0, 'Sonstige'); @@ -69,12 +72,12 @@ -- Geodaesie/Bauwerke CREATE SEQUENCE BUILDINGS_ID_SEQ; CREATE TABLE buildings ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, description VARCHAR(256), -- Name taken from attributes, name VARCHAR(256), -- The layername - km FLOAT8, - kind_id int REFERENCES building_kinds(id) NOT NULL DEFAULT 0, + km NUMERIC(15,11), + kind_id NUMERIC(9,0) REFERENCES building_kinds(id) NOT NULL DEFAULT 0, path VARCHAR(256) ); SELECT AddGeometryColumn('buildings', 'geom', 31467, 'LINESTRING', 2); @@ -84,11 +87,11 @@ -- Geodaesie/Festpunkte/Festpunkte.shp CREATE SEQUENCE FIXPOINTS_ID_SEQ; CREATE TABLE fixpoints ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, - x FLOAT8, - y FLOAT8, - km FLOAT8 NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, + x NUMERIC(15,11), + y NUMERIC(15,11), + km NUMERIC(15,11) NOT NULL, HPGP VARCHAR(64), name VARCHAR(64), path VARCHAR(256) @@ -99,7 +102,7 @@ -- Hydrologie/Hydr. Grenzen/talaue.shp CREATE TABLE floodplain_kinds( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(64) ); INSERT INTO floodplain_kinds(id, name) VALUES (0, 'Sonstige'); @@ -107,9 +110,9 @@ CREATE SEQUENCE FLOODPLAIN_ID_SEQ; CREATE TABLE floodplain ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, - kind_id int REFERENCES floodplain_kinds(id) NOT NULL DEFAULT 0, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, + kind_id NUMERIC(9,0) REFERENCES floodplain_kinds(id) NOT NULL DEFAULT 0, name VARCHAR(64), path VARCHAR(256) ); @@ -120,16 +123,16 @@ -- Geodaesie/Hoehenmodelle/* CREATE SEQUENCE DEM_ID_SEQ; CREATE TABLE dem ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, name VARCHAR(64), - range_id INT REFERENCES ranges(id) ON DELETE CASCADE, - time_interval_id INT REFERENCES time_intervals(id), + range_id NUMERIC(9,0) REFERENCES ranges(id) ON DELETE CASCADE, + time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), projection VARCHAR(32), - srid int NOT NULL, + srid NUMERIC(9,0) NOT NULL, elevation_state VARCHAR(32), format VARCHAR(32), - border_break BOOLEAN NOT NULL DEFAULT FALSE, + border_break NUMERIC(1,0) NOT NULL DEFAULT 0, resolution VARCHAR(16), description VARCHAR(256), path VARCHAR(256) NOT NULL @@ -139,7 +142,7 @@ -- Static lookup tables for Hochwasserschutzanlagen CREATE TABLE hws_kinds ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, kind VARCHAR(64) NOT NULL ); INSERT INTO hws_kinds (id, kind) VALUES (1, 'Durchlass'); @@ -147,7 +150,7 @@ INSERT INTO hws_kinds (id, kind) VALUES (3, 'Graben'); CREATE TABLE fed_states ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(23) NOT NULL ); INSERT INTO fed_states (id, name) VALUES (1, 'Bayern'); @@ -170,19 +173,19 @@ --Hydrologie/HW-Schutzanlagen/*Linien.shp CREATE SEQUENCE HWS_LINES_ID_SEQ; CREATE TABLE hws_lines ( - id int PRIMARY KEY NOT NULL, - ogr_fid int, - kind_id int REFERENCES hws_kinds(id) DEFAULT 2, - fed_state_id int REFERENCES fed_states(id), - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + ogr_fid NUMERIC(9,0), + kind_id NUMERIC(9,0) REFERENCES hws_kinds(id) DEFAULT 2, + fed_state_id NUMERIC(9,0) REFERENCES fed_states(id), + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, name VARCHAR(256), path VARCHAR(256), - official INT DEFAULT 0, + official NUMERIC(9,0) DEFAULT 0, agency VARCHAR(256), range VARCHAR(256), - shore_side INT DEFAULT 0, + shore_side NUMERIC(9,0) DEFAULT 0, source VARCHAR(256), - status_date TIMESTAMP, + status_date TIMESTAMP(0), description VARCHAR(256) ); SELECT AddGeometryColumn('hws_lines', 'geom', 31467, 'MULTILINESTRING', 3); @@ -193,25 +196,25 @@ --Hydrologie/HW-Schutzanlagen/*Punkte.shp CREATE SEQUENCE HWS_POINTS_ID_SEQ; CREATE TABLE hws_points ( - id int PRIMARY KEY NOT NULL, - ogr_fid int, - kind_id int REFERENCES hws_kinds(id) DEFAULT 2, - fed_state_id int REFERENCES fed_states(id), - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + ogr_fid NUMERIC(9,0), + kind_id NUMERIC(9,0) REFERENCES hws_kinds(id) DEFAULT 2, + fed_state_id NUMERIC(9,0) REFERENCES fed_states(id), + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, name VARCHAR, path VARCHAR, - official INT DEFAULT 0, + official NUMERIC(9,0) DEFAULT 0, agency VARCHAR, range VARCHAR, - shore_side INT DEFAULT 0, + shore_side NUMERIC(9,0) DEFAULT 0, source VARCHAR, status_date VARCHAR, description VARCHAR, - freeboard FLOAT8, - dike_km FLOAT8, - z FLOAT8, - z_target FLOAT8, - rated_level FLOAT8 + freeboard NUMERIC(19,5), + dike_km NUMERIC(19,5), + z NUMERIC(19,5), + z_target NUMERIC(19,5), + rated_level NUMERIC(19,5) ); SELECT AddGeometryColumn('hws_points', 'geom', 31467, 'POINT', 2); @@ -220,7 +223,7 @@ -- --Hydrologie/UeSG CREATE TABLE floodmap_kinds ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name varchar(64) NOT NULL ); INSERT INTO floodmap_kinds VALUES (200, 'Messung'); @@ -231,14 +234,14 @@ CREATE SEQUENCE FLOODMAPS_ID_SEQ; CREATE TABLE floodmaps ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, name varchar(64) NOT NULL, - kind int NOT NULL REFERENCES floodmap_kinds(id), - diff FLOAT8, - count int, - area FLOAT8, - perimeter FLOAT8, + kind NUMERIC(9,0) NOT NULL REFERENCES floodmap_kinds(id), + diff NUMERIC(19,5), + count NUMERIC(9,0), + area NUMERIC(19,5), + perimeter NUMERIC(19,5), waterbody varchar(64), path VARCHAR(256), source varchar(64) @@ -247,7 +250,7 @@ ALTER TABLE floodmaps ALTER COLUMN id SET DEFAULT NEXTVAL('FLOODMAPS_ID_SEQ'); CREATE TABLE sectie_kinds ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(64) NOT NULL ); INSERT INTO sectie_kinds (id, name) VALUES (0, 'nicht berücksichtigt'); @@ -256,7 +259,7 @@ INSERT INTO sectie_kinds (id, name) VALUES (3, 'Vorland'); CREATE TABLE sobek_kinds ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(64) NOT NULL ); INSERT INTO sobek_kinds (id, name) VALUES (0, 'nicht berücksichtigt'); @@ -264,7 +267,7 @@ INSERT INTO sobek_kinds (id, name) VALUES (2, 'nicht durchströmt'); CREATE TABLE boundary_kinds ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(64) NOT NULL ); INSERT INTO boundary_kinds (id, name) VALUES (0, 'Unbekannt'); @@ -274,12 +277,12 @@ CREATE SEQUENCE HYDR_BOUNDARIES_ID_SEQ; CREATE TABLE hydr_boundaries ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, name VARCHAR(255), - kind int REFERENCES boundary_kinds(id) NOT NULL DEFAULT 0, - sectie int REFERENCES sectie_kinds(id), - sobek int REFERENCES sobek_kinds(id), + kind NUMERIC(9,0) REFERENCES boundary_kinds(id) NOT NULL DEFAULT 0, + sectie NUMERIC(9,0) REFERENCES sectie_kinds(id), + sobek NUMERIC(9,0) REFERENCES sobek_kinds(id), path VARCHAR(256) ); SELECT AddGeometryColumn('hydr_boundaries','geom',31467,'MULTILINESTRING',3); @@ -288,12 +291,12 @@ CREATE SEQUENCE HYDR_BOUNDARIES_POLY_ID_SEQ; CREATE TABLE hydr_boundaries_poly ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, name VARCHAR(255), - kind int REFERENCES boundary_kinds(id) NOT NULL DEFAULT 0, - sectie int REFERENCES sectie_kinds(id), - sobek int REFERENCES sobek_kinds(id), + kind NUMERIC(9,0) REFERENCES boundary_kinds(id) NOT NULL DEFAULT 0, + sectie NUMERIC(9,0) REFERENCES sectie_kinds(id), + sobek NUMERIC(9,0) REFERENCES sobek_kinds(id), path VARCHAR(256) ); SELECT AddGeometryColumn('hydr_boundaries_poly','geom',31467,'MULTIPOLYGON',3); @@ -301,7 +304,7 @@ CREATE TABLE jetty_kinds( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(64) ); INSERT INTO jetty_kinds VALUES (0, 'Buhnenkopf'); @@ -310,10 +313,10 @@ CREATE SEQUENCE JETTIES_ID_SEQ; CREATE TABLE jetties ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, path VARCHAR(256), - kind_id int REFERENCES jetty_kinds(id), + kind_id NUMERIC(9,0) REFERENCES jetty_kinds(id), km FLOAT8, z FLOAT8 ); @@ -322,13 +325,13 @@ CREATE SEQUENCE FLOOD_MARKS_ID_SEQ; CREATE TABLE flood_marks ( - id int PRIMARY KEY NOT NULL, - river_id int REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) REFERENCES rivers(id) ON DELETE CASCADE, path VARCHAR(256), - km FLOAT8, - z FLOAT8, + km NUMERIC(7,3), + z NUMERIC(16,12), location VARCHAR(64), - year int + year NUMERIC(4,0) ); SELECT AddGeometryColumn('flood_marks','geom',31467,'POINT',2); ALTER TABLE flood_marks ALTER COLUMN id SET DEFAULT NEXTVAL('FLOOD_MARKS_ID_SEQ'); diff -r a9950a3a71e5 -r 71b17f731762 backend/doc/schema/postgresql.sql --- a/backend/doc/schema/postgresql.sql Wed Mar 07 17:36:04 2018 +0100 +++ b/backend/doc/schema/postgresql.sql Tue Mar 13 09:42:41 2018 +0100 @@ -3,7 +3,7 @@ CREATE SEQUENCE UNITS_ID_SEQ; CREATE TABLE units ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(32) NOT NULL UNIQUE ); @@ -11,7 +11,7 @@ -- Lookup table for optional matching with differing river names in SedDB -- Add name here and set rivers.seddb_name_id to id CREATE TABLE seddb_name ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(256) NOT NULL ); @@ -19,13 +19,13 @@ CREATE SEQUENCE RIVERS_ID_SEQ; CREATE TABLE rivers ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, model_uuid CHAR(36) UNIQUE, - official_number int8, + official_number NUMERIC(12,0), name VARCHAR(256) NOT NULL UNIQUE, - km_up int DEFAULT 0 NOT NULL, - wst_unit_id int NOT NULL REFERENCES units(id), - seddb_name_id int REFERENCES seddb_name(id), + km_up NUMERIC(1,0) DEFAULT 0 NOT NULL, + wst_unit_id NUMERIC(9,0) NOT NULL REFERENCES units(id), + seddb_name_id NUMERIC(9,0) REFERENCES seddb_name(id), CHECK(km_up IN(0,1)) ); @@ -33,18 +33,19 @@ CREATE SEQUENCE ATTRIBUTES_ID_SEQ; CREATE TABLE attributes ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, value VARCHAR(256) NOT NULL UNIQUE ); -- segments from/to at a river CREATE SEQUENCE RANGES_ID_SEQ; +--FIXME: make precision and scale of a and b columns equal with the km columns of the other tables CREATE TABLE ranges ( - id int PRIMARY KEY NOT NULL, - river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, - a NUMERIC NOT NULL, - b NUMERIC, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, + a NUMERIC(14,10) NOT NULL, + b NUMERIC(14,10), UNIQUE (river_id, a, b), CHECK (a < b) ); @@ -54,7 +55,7 @@ CREATE SEQUENCE POSITIONS_ID_SEQ; CREATE TABLE positions ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, value VARCHAR(256) NOT NULL UNIQUE ); @@ -62,16 +63,16 @@ CREATE SEQUENCE EDGES_ID_SEQ; CREATE TABLE edges ( - id int PRIMARY KEY NOT NULL, - top NUMERIC, - bottom NUMERIC + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + top NUMERIC(6,2), + bottom NUMERIC(6,2) ); -- Types of annotatations (Hafen, Bruecke, Zufluss, ...) CREATE SEQUENCE ANNOTATION_TYPES_ID_SEQ; CREATE TABLE annotation_types ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(256) NOT NULL UNIQUE ); @@ -80,30 +81,31 @@ CREATE SEQUENCE ANNOTATIONS_ID_SEQ; CREATE TABLE annotations ( - id int PRIMARY KEY NOT NULL, - range_id int NOT NULL REFERENCES ranges(id) ON DELETE CASCADE, - attribute_id int NOT NULL REFERENCES attributes(id), - position_id int REFERENCES positions(id), - edge_id int REFERENCES edges(id), - type_id int REFERENCES annotation_types(id) + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + range_id NUMERIC(9,0) NOT NULL REFERENCES ranges(id) ON DELETE CASCADE, + attribute_id NUMERIC(9,0) NOT NULL REFERENCES attributes(id), + position_id NUMERIC(9,0) REFERENCES positions(id), + edge_id NUMERIC(9,0) REFERENCES edges(id), + type_id NUMERIC(9,0) REFERENCES annotation_types(id) ); -- Pegel CREATE SEQUENCE GAUGES_ID_SEQ; +--FIXME: make precision and scale of station column equal with the km columns of the other tables CREATE TABLE gauges ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(256) NOT NULL, -- remove river id here because range_id references river already - river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, - station NUMERIC NOT NULL, - aeo NUMERIC NOT NULL, - official_number int8, + river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, + station NUMERIC(8,4) NOT NULL, + aeo NUMERIC(9,2) NOT NULL, + official_number NUMERIC(12,0), -- Pegelnullpunkt - datum NUMERIC NOT NULL, + datum NUMERIC(6,2) NOT NULL, -- Streckengueltigkeit - range_id int REFERENCES ranges (id) ON DELETE CASCADE, + range_id NUMERIC(9,0) REFERENCES ranges (id) ON DELETE CASCADE, UNIQUE (name, river_id), UNIQUE (official_number, river_id), @@ -114,7 +116,7 @@ CREATE SEQUENCE MAIN_VALUE_TYPES_ID_SEQ; CREATE TABLE main_value_types ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(256) NOT NULL UNIQUE ); @@ -122,18 +124,18 @@ CREATE SEQUENCE NAMED_MAIN_VALUES_ID_SEQ; CREATE TABLE named_main_values ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(256) NOT NULL, - type_id int NOT NULL REFERENCES main_value_types(id) + type_id NUMERIC(9,0) NOT NULL REFERENCES main_value_types(id) ); -- Table for time intervals CREATE SEQUENCE TIME_INTERVALS_ID_SEQ; CREATE TABLE time_intervals ( - id int PRIMARY KEY NOT NULL, - start_time TIMESTAMP NOT NULL, - stop_time TIMESTAMP, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + start_time TIMESTAMP(0) NOT NULL, + stop_time TIMESTAMP(0), CHECK (start_time <= stop_time) ); @@ -142,12 +144,12 @@ CREATE SEQUENCE MAIN_VALUES_ID_SEQ; CREATE TABLE main_values ( - id int PRIMARY KEY NOT NULL, - gauge_id int NOT NULL REFERENCES gauges(id) ON DELETE CASCADE, - named_value_id int NOT NULL REFERENCES named_main_values(id), - value NUMERIC NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + gauge_id NUMERIC(9,0) NOT NULL REFERENCES gauges(id) ON DELETE CASCADE, + named_value_id NUMERIC(9,0) NOT NULL REFERENCES named_main_values(id), + value NUMERIC(12,2) NOT NULL, - time_interval_id int REFERENCES time_intervals(id), + time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), -- TODO: better checks UNIQUE (gauge_id, named_value_id, time_interval_id) @@ -157,12 +159,12 @@ CREATE SEQUENCE DISCHARGE_TABLES_ID_SEQ; CREATE TABLE discharge_tables ( - id int PRIMARY KEY NOT NULL, - gauge_id int NOT NULL REFERENCES gauges(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + gauge_id NUMERIC(9,0) NOT NULL REFERENCES gauges(id) ON DELETE CASCADE, description VARCHAR(256) NOT NULL, bfg_id VARCHAR(50), - kind int NOT NULL DEFAULT 0, - time_interval_id int REFERENCES time_intervals(id), + kind NUMERIC(9,0) NOT NULL DEFAULT 0, + time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), UNIQUE(gauge_id, bfg_id, kind) ); @@ -170,10 +172,10 @@ CREATE SEQUENCE DISCHARGE_TABLE_VALUES_ID_SEQ; CREATE TABLE discharge_table_values ( - id int PRIMARY KEY NOT NULL, - table_id int NOT NULL REFERENCES discharge_tables(id) ON DELETE CASCADE, - q NUMERIC NOT NULL, - w NUMERIC NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + table_id NUMERIC(9,0) NOT NULL REFERENCES discharge_tables(id) ON DELETE CASCADE, + q NUMERIC(9,4) NOT NULL, + w NUMERIC(6,2) NOT NULL, UNIQUE (table_id, q, w) ); @@ -181,7 +183,7 @@ -- WST files --lookup table for wst kinds CREATE TABLE wst_kinds ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, kind VARCHAR(64) NOT NULL ); INSERT INTO wst_kinds (id, kind) VALUES (0, 'basedata'); @@ -197,10 +199,10 @@ CREATE SEQUENCE WSTS_ID_SEQ; CREATE TABLE wsts ( - id int PRIMARY KEY NOT NULL, - river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, description VARCHAR(256) NOT NULL, - kind int NOT NULL REFERENCES wst_kinds(id) DEFAULT 0, + kind NUMERIC(9,0) NOT NULL REFERENCES wst_kinds(id) DEFAULT 0, -- TODO: more meta infos UNIQUE (river_id, description) ); @@ -209,14 +211,14 @@ CREATE SEQUENCE WST_COLUMNS_ID_SEQ; CREATE TABLE wst_columns ( - id int PRIMARY KEY NOT NULL, - wst_id int NOT NULL REFERENCES wsts(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + wst_id NUMERIC(9,0) NOT NULL REFERENCES wsts(id) ON DELETE CASCADE, name VARCHAR(256) NOT NULL, description VARCHAR(256), source VARCHAR(256), - position int NOT NULL DEFAULT 0, + position NUMERIC(9,0) NOT NULL DEFAULT 0, - time_interval_id int REFERENCES time_intervals(id), + time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), UNIQUE (wst_id, name), UNIQUE (wst_id, position) @@ -226,10 +228,10 @@ CREATE SEQUENCE WST_COLUMN_VALUES_ID_SEQ; CREATE TABLE wst_column_values ( - id int PRIMARY KEY NOT NULL, - wst_column_id int NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, - position NUMERIC NOT NULL, - w NUMERIC NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + wst_column_id NUMERIC(9,0) NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, + position NUMERIC(9,5) NOT NULL, + w NUMERIC(9,5) NOT NULL, UNIQUE (position, wst_column_id), UNIQUE (position, wst_column_id, w) @@ -239,18 +241,18 @@ CREATE SEQUENCE WST_Q_RANGES_ID_SEQ; CREATE TABLE wst_q_ranges ( - id int PRIMARY KEY NOT NULL, - range_id int NOT NULL REFERENCES ranges(id) ON DELETE CASCADE, - q NUMERIC NOT NULL + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + range_id NUMERIC(9,0) NOT NULL REFERENCES ranges(id) ON DELETE CASCADE, + q NUMERIC(10,5) NOT NULL ); -- bind q ranges to wst columns CREATE SEQUENCE WST_COLUMN_Q_RANGES_ID_SEQ; CREATE TABLE wst_column_q_ranges ( - id int PRIMARY KEY NOT NULL, - wst_column_id int NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, - wst_q_range_id int NOT NULL REFERENCES wst_q_ranges(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + wst_column_id NUMERIC(9,0) NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, + wst_q_range_id NUMERIC(9,0) NOT NULL REFERENCES wst_q_ranges(id) ON DELETE CASCADE, UNIQUE (wst_column_id, wst_q_range_id) ); @@ -258,9 +260,9 @@ CREATE SEQUENCE OFFICIAL_LINES_ID_SEQ; CREATE TABLE official_lines ( - id int PRIMARY KEY NOT NULL, - wst_column_id int NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, - named_main_value_id int NOT NULL REFERENCES named_main_values(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + wst_column_id NUMERIC(9,0) NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, + named_main_value_id NUMERIC(9,0) NOT NULL REFERENCES named_main_values(id) ON DELETE CASCADE, UNIQUE (wst_column_id, named_main_value_id) ); @@ -315,29 +317,29 @@ CREATE SEQUENCE CROSS_SECTIONS_ID_SEQ; CREATE TABLE cross_sections ( - id int PRIMARY KEY NOT NULL, - river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, - time_interval_id int REFERENCES time_intervals(id), + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, + time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), description VARCHAR(256) ); CREATE SEQUENCE CROSS_SECTION_LINES_ID_SEQ; CREATE TABLE cross_section_lines ( - id int PRIMARY KEY NOT NULL, - km NUMERIC NOT NULL, - cross_section_id int NOT NULL REFERENCES cross_sections(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + km NUMERIC(9,5) NOT NULL, + cross_section_id NUMERIC(9,0) NOT NULL REFERENCES cross_sections(id) ON DELETE CASCADE, UNIQUE (km, cross_section_id) ); CREATE SEQUENCE CROSS_SECTION_POINTS_ID_SEQ; CREATE TABLE cross_section_points ( - id int PRIMARY KEY NOT NULL, - cross_section_line_id int NOT NULL REFERENCES cross_section_lines(id) ON DELETE CASCADE, - col_pos int NOT NULL, - x NUMERIC NOT NULL, - y NUMERIC NOT NULL + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + cross_section_line_id NUMERIC(9,0) NOT NULL REFERENCES cross_section_lines(id) ON DELETE CASCADE, + col_pos NUMERIC(9,0) NOT NULL, + x NUMERIC(7,2) NOT NULL, + y NUMERIC(7,2) NOT NULL ); -- Indices for faster access of the points @@ -351,39 +353,40 @@ CREATE SEQUENCE HYKS_ID_SEQ; CREATE TABLE hyks ( - id int PRIMARY KEY NOT NULL, - river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, description VARCHAR(256) NOT NULL ); CREATE SEQUENCE HYK_ENTRIES_ID_SEQ; +--FIXME: make precision and scale of km column equal with the km columns of the other tables CREATE TABLE hyk_entries ( - id int PRIMARY KEY NOT NULL, - hyk_id int NOT NULL REFERENCES hyks(id) ON DELETE CASCADE, - km NUMERIC NOT NULL, - measure TIMESTAMP, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + hyk_id NUMERIC(9,0) NOT NULL REFERENCES hyks(id) ON DELETE CASCADE, + km NUMERIC(7,2) NOT NULL, + measure TIMESTAMP(0), UNIQUE (hyk_id, km) ); CREATE SEQUENCE HYK_FORMATIONS_ID_SEQ; CREATE TABLE hyk_formations ( - id int PRIMARY KEY NOT NULL, - formation_num int NOT NULL DEFAULT 0, - hyk_entry_id int NOT NULL REFERENCES hyk_entries(id) ON DELETE CASCADE, - top NUMERIC NOT NULL, - bottom NUMERIC NOT NULL, - distance_vl NUMERIC NOT NULL, - distance_hf NUMERIC NOT NULL, - distance_vr NUMERIC NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + formation_num NUMERIC(9,0) NOT NULL DEFAULT 0, + hyk_entry_id NUMERIC(9,0) NOT NULL REFERENCES hyk_entries(id) ON DELETE CASCADE, + top NUMERIC(6,2) NOT NULL, + bottom NUMERIC(6,2) NOT NULL, + distance_vl NUMERIC(8,2) NOT NULL, + distance_hf NUMERIC(8,2) NOT NULL, + distance_vr NUMERIC(8,2) NOT NULL, UNIQUE (hyk_entry_id, formation_num) ); CREATE SEQUENCE HYK_FLOW_ZONE_TYPES_ID_SEQ; CREATE TABLE hyk_flow_zone_types ( - id int PRIMARY KEY NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, name VARCHAR(50) NOT NULL UNIQUE, description VARCHAR(256) ); @@ -391,11 +394,11 @@ CREATE SEQUENCE HYK_FLOW_ZONES_ID_SEQ; CREATE TABLE hyk_flow_zones ( - id int PRIMARY KEY NOT NULL, - formation_id int NOT NULL REFERENCES hyk_formations(id) ON DELETE CASCADE, - type_id int NOT NULL REFERENCES hyk_flow_zone_types(id), - a NUMERIC NOT NULL, - b NUMERIC NOT NULL, + id NUMERIC(9,0) PRIMARY KEY NOT NULL, + formation_id NUMERIC(9,0) NOT NULL REFERENCES hyk_formations(id) ON DELETE CASCADE, + type_id NUMERIC(9,0) NOT NULL REFERENCES hyk_flow_zone_types(id), + a NUMERIC(7,2) NOT NULL, + b NUMERIC(7,2) NOT NULL, CHECK (a <= b) );