comparison backend/doc/schema/postgresql.sql @ 8965:f89fb9e9abad

Datatype changes from rev 8942 reverted
author mschaefer
date Tue, 03 Apr 2018 08:26:54 +0200
parents 71b17f731762
children
comparison
equal deleted inserted replaced
8964:45f1ad66560e 8965:f89fb9e9abad
1 BEGIN; 1 BEGIN;
2 2
3 CREATE SEQUENCE UNITS_ID_SEQ; 3 CREATE SEQUENCE UNITS_ID_SEQ;
4 4
5 CREATE TABLE units ( 5 CREATE TABLE units (
6 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 6 id int PRIMARY KEY NOT NULL,
7 name VARCHAR(32) NOT NULL UNIQUE 7 name VARCHAR(32) NOT NULL UNIQUE
8 ); 8 );
9 9
10 -- SEDDB_NAME 10 -- SEDDB_NAME
11 -- Lookup table for optional matching with differing river names in SedDB 11 -- Lookup table for optional matching with differing river names in SedDB
12 -- Add name here and set rivers.seddb_name_id to id 12 -- Add name here and set rivers.seddb_name_id to id
13 CREATE TABLE seddb_name ( 13 CREATE TABLE seddb_name (
14 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 14 id int PRIMARY KEY NOT NULL,
15 name VARCHAR(256) NOT NULL 15 name VARCHAR(256) NOT NULL
16 ); 16 );
17 17
18 -- Gewaesser 18 -- Gewaesser
19 CREATE SEQUENCE RIVERS_ID_SEQ; 19 CREATE SEQUENCE RIVERS_ID_SEQ;
20 20
21 CREATE TABLE rivers ( 21 CREATE TABLE rivers (
22 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 22 id int PRIMARY KEY NOT NULL,
23 model_uuid CHAR(36) UNIQUE, 23 model_uuid CHAR(36) UNIQUE,
24 official_number NUMERIC(12,0), 24 official_number int8,
25 name VARCHAR(256) NOT NULL UNIQUE, 25 name VARCHAR(256) NOT NULL UNIQUE,
26 km_up NUMERIC(1,0) DEFAULT 0 NOT NULL, 26 km_up int DEFAULT 0 NOT NULL,
27 wst_unit_id NUMERIC(9,0) NOT NULL REFERENCES units(id), 27 wst_unit_id int NOT NULL REFERENCES units(id),
28 seddb_name_id NUMERIC(9,0) REFERENCES seddb_name(id), 28 seddb_name_id int REFERENCES seddb_name(id),
29 CHECK(km_up IN(0,1)) 29 CHECK(km_up IN(0,1))
30 ); 30 );
31 31
32 -- Bruecke, Haefen, etc. 32 -- Bruecke, Haefen, etc.
33 CREATE SEQUENCE ATTRIBUTES_ID_SEQ; 33 CREATE SEQUENCE ATTRIBUTES_ID_SEQ;
34 34
35 CREATE TABLE attributes ( 35 CREATE TABLE attributes (
36 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 36 id int PRIMARY KEY NOT NULL,
37 value VARCHAR(256) NOT NULL UNIQUE 37 value VARCHAR(256) NOT NULL UNIQUE
38 ); 38 );
39 39
40 -- segments from/to at a river 40 -- segments from/to at a river
41 CREATE SEQUENCE RANGES_ID_SEQ; 41 CREATE SEQUENCE RANGES_ID_SEQ;
42 42
43 --FIXME: make precision and scale of a and b columns equal with the km columns of the other tables
44 CREATE TABLE ranges ( 43 CREATE TABLE ranges (
45 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 44 id int PRIMARY KEY NOT NULL,
46 river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, 45 river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE,
47 a NUMERIC(14,10) NOT NULL, 46 a NUMERIC NOT NULL,
48 b NUMERIC(14,10), 47 b NUMERIC,
49 UNIQUE (river_id, a, b), 48 UNIQUE (river_id, a, b),
50 CHECK (a < b) 49 CHECK (a < b)
51 ); 50 );
52 51
53 52
54 -- Lage 'links', 'rechts', etc. 53 -- Lage 'links', 'rechts', etc.
55 CREATE SEQUENCE POSITIONS_ID_SEQ; 54 CREATE SEQUENCE POSITIONS_ID_SEQ;
56 55
57 CREATE TABLE positions ( 56 CREATE TABLE positions (
58 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 57 id int PRIMARY KEY NOT NULL,
59 value VARCHAR(256) NOT NULL UNIQUE 58 value VARCHAR(256) NOT NULL UNIQUE
60 ); 59 );
61 60
62 -- Kante 'oben', 'unten' 61 -- Kante 'oben', 'unten'
63 CREATE SEQUENCE EDGES_ID_SEQ; 62 CREATE SEQUENCE EDGES_ID_SEQ;
64 63
65 CREATE TABLE edges ( 64 CREATE TABLE edges (
66 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 65 id int PRIMARY KEY NOT NULL,
67 top NUMERIC(6,2), 66 top NUMERIC,
68 bottom NUMERIC(6,2) 67 bottom NUMERIC
69 ); 68 );
70 69
71 -- Types of annotatations (Hafen, Bruecke, Zufluss, ...) 70 -- Types of annotatations (Hafen, Bruecke, Zufluss, ...)
72 CREATE SEQUENCE ANNOTATION_TYPES_ID_SEQ; 71 CREATE SEQUENCE ANNOTATION_TYPES_ID_SEQ;
73 72
74 CREATE TABLE annotation_types ( 73 CREATE TABLE annotation_types (
75 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 74 id int PRIMARY KEY NOT NULL,
76 name VARCHAR(256) NOT NULL UNIQUE 75 name VARCHAR(256) NOT NULL UNIQUE
77 ); 76 );
78 77
79 -- Some object (eg. Hafen) at a segment of river 78 -- Some object (eg. Hafen) at a segment of river
80 -- plus its position. 79 -- plus its position.
81 CREATE SEQUENCE ANNOTATIONS_ID_SEQ; 80 CREATE SEQUENCE ANNOTATIONS_ID_SEQ;
82 81
83 CREATE TABLE annotations ( 82 CREATE TABLE annotations (
84 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 83 id int PRIMARY KEY NOT NULL,
85 range_id NUMERIC(9,0) NOT NULL REFERENCES ranges(id) ON DELETE CASCADE, 84 range_id int NOT NULL REFERENCES ranges(id) ON DELETE CASCADE,
86 attribute_id NUMERIC(9,0) NOT NULL REFERENCES attributes(id), 85 attribute_id int NOT NULL REFERENCES attributes(id),
87 position_id NUMERIC(9,0) REFERENCES positions(id), 86 position_id int REFERENCES positions(id),
88 edge_id NUMERIC(9,0) REFERENCES edges(id), 87 edge_id int REFERENCES edges(id),
89 type_id NUMERIC(9,0) REFERENCES annotation_types(id) 88 type_id int REFERENCES annotation_types(id)
90 ); 89 );
91 90
92 -- Pegel 91 -- Pegel
93 CREATE SEQUENCE GAUGES_ID_SEQ; 92 CREATE SEQUENCE GAUGES_ID_SEQ;
94 93
95 --FIXME: make precision and scale of station column equal with the km columns of the other tables
96 CREATE TABLE gauges ( 94 CREATE TABLE gauges (
97 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 95 id int PRIMARY KEY NOT NULL,
98 name VARCHAR(256) NOT NULL, 96 name VARCHAR(256) NOT NULL,
99 -- remove river id here because range_id references river already 97 -- remove river id here because range_id references river already
100 river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, 98 river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE,
101 station NUMERIC(8,4) NOT NULL, 99 station NUMERIC NOT NULL,
102 aeo NUMERIC(9,2) NOT NULL, 100 aeo NUMERIC NOT NULL,
103 official_number NUMERIC(12,0), 101 official_number int8,
104 102
105 -- Pegelnullpunkt 103 -- Pegelnullpunkt
106 datum NUMERIC(6,2) NOT NULL, 104 datum NUMERIC NOT NULL,
107 -- Streckengueltigkeit 105 -- Streckengueltigkeit
108 range_id NUMERIC(9,0) REFERENCES ranges (id) ON DELETE CASCADE, 106 range_id int REFERENCES ranges (id) ON DELETE CASCADE,
109 107
110 UNIQUE (name, river_id), 108 UNIQUE (name, river_id),
111 UNIQUE (official_number, river_id), 109 UNIQUE (official_number, river_id),
112 UNIQUE (river_id, station) 110 UNIQUE (river_id, station)
113 ); 111 );
114 112
115 -- Type of a Hauptwert 'W', 'Q', 'D', etc. 113 -- Type of a Hauptwert 'W', 'Q', 'D', etc.
116 CREATE SEQUENCE MAIN_VALUE_TYPES_ID_SEQ; 114 CREATE SEQUENCE MAIN_VALUE_TYPES_ID_SEQ;
117 115
118 CREATE TABLE main_value_types ( 116 CREATE TABLE main_value_types (
119 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 117 id int PRIMARY KEY NOT NULL,
120 name VARCHAR(256) NOT NULL UNIQUE 118 name VARCHAR(256) NOT NULL UNIQUE
121 ); 119 );
122 120
123 -- Named type of a Hauptwert (eg. HQ100) 121 -- Named type of a Hauptwert (eg. HQ100)
124 CREATE SEQUENCE NAMED_MAIN_VALUES_ID_SEQ; 122 CREATE SEQUENCE NAMED_MAIN_VALUES_ID_SEQ;
125 123
126 CREATE TABLE named_main_values ( 124 CREATE TABLE named_main_values (
127 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 125 id int PRIMARY KEY NOT NULL,
128 name VARCHAR(256) NOT NULL, 126 name VARCHAR(256) NOT NULL,
129 type_id NUMERIC(9,0) NOT NULL REFERENCES main_value_types(id) 127 type_id int NOT NULL REFERENCES main_value_types(id)
130 ); 128 );
131 129
132 -- Table for time intervals 130 -- Table for time intervals
133 CREATE SEQUENCE TIME_INTERVALS_ID_SEQ; 131 CREATE SEQUENCE TIME_INTERVALS_ID_SEQ;
134 132
135 CREATE TABLE time_intervals ( 133 CREATE TABLE time_intervals (
136 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 134 id int PRIMARY KEY NOT NULL,
137 start_time TIMESTAMP(0) NOT NULL, 135 start_time TIMESTAMP NOT NULL,
138 stop_time TIMESTAMP(0), 136 stop_time TIMESTAMP,
139 CHECK (start_time <= stop_time) 137 CHECK (start_time <= stop_time)
140 ); 138 );
141 139
142 140
143 -- Stammdaten 141 -- Stammdaten
144 CREATE SEQUENCE MAIN_VALUES_ID_SEQ; 142 CREATE SEQUENCE MAIN_VALUES_ID_SEQ;
145 143
146 CREATE TABLE main_values ( 144 CREATE TABLE main_values (
147 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 145 id int PRIMARY KEY NOT NULL,
148 gauge_id NUMERIC(9,0) NOT NULL REFERENCES gauges(id) ON DELETE CASCADE, 146 gauge_id int NOT NULL REFERENCES gauges(id) ON DELETE CASCADE,
149 named_value_id NUMERIC(9,0) NOT NULL REFERENCES named_main_values(id), 147 named_value_id int NOT NULL REFERENCES named_main_values(id),
150 value NUMERIC(12,2) NOT NULL, 148 value NUMERIC NOT NULL,
151 149
152 time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), 150 time_interval_id int REFERENCES time_intervals(id),
153 151
154 -- TODO: better checks 152 -- TODO: better checks
155 UNIQUE (gauge_id, named_value_id, time_interval_id) 153 UNIQUE (gauge_id, named_value_id, time_interval_id)
156 ); 154 );
157 155
158 -- Abflusstafeln 156 -- Abflusstafeln
159 CREATE SEQUENCE DISCHARGE_TABLES_ID_SEQ; 157 CREATE SEQUENCE DISCHARGE_TABLES_ID_SEQ;
160 158
161 CREATE TABLE discharge_tables ( 159 CREATE TABLE discharge_tables (
162 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 160 id int PRIMARY KEY NOT NULL,
163 gauge_id NUMERIC(9,0) NOT NULL REFERENCES gauges(id) ON DELETE CASCADE, 161 gauge_id int NOT NULL REFERENCES gauges(id) ON DELETE CASCADE,
164 description VARCHAR(256) NOT NULL, 162 description VARCHAR(256) NOT NULL,
165 bfg_id VARCHAR(50), 163 bfg_id VARCHAR(50),
166 kind NUMERIC(9,0) NOT NULL DEFAULT 0, 164 kind int NOT NULL DEFAULT 0,
167 time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), 165 time_interval_id int REFERENCES time_intervals(id),
168 UNIQUE(gauge_id, bfg_id, kind) 166 UNIQUE(gauge_id, bfg_id, kind)
169 ); 167 );
170 168
171 -- Values of the Abflusstafeln 169 -- Values of the Abflusstafeln
172 CREATE SEQUENCE DISCHARGE_TABLE_VALUES_ID_SEQ; 170 CREATE SEQUENCE DISCHARGE_TABLE_VALUES_ID_SEQ;
173 171
174 CREATE TABLE discharge_table_values ( 172 CREATE TABLE discharge_table_values (
175 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 173 id int PRIMARY KEY NOT NULL,
176 table_id NUMERIC(9,0) NOT NULL REFERENCES discharge_tables(id) ON DELETE CASCADE, 174 table_id int NOT NULL REFERENCES discharge_tables(id) ON DELETE CASCADE,
177 q NUMERIC(9,4) NOT NULL, 175 q NUMERIC NOT NULL,
178 w NUMERIC(6,2) NOT NULL, 176 w NUMERIC NOT NULL,
179 177
180 UNIQUE (table_id, q, w) 178 UNIQUE (table_id, q, w)
181 ); 179 );
182 180
183 -- WST files 181 -- WST files
184 --lookup table for wst kinds 182 --lookup table for wst kinds
185 CREATE TABLE wst_kinds ( 183 CREATE TABLE wst_kinds (
186 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 184 id int PRIMARY KEY NOT NULL,
187 kind VARCHAR(64) NOT NULL 185 kind VARCHAR(64) NOT NULL
188 ); 186 );
189 INSERT INTO wst_kinds (id, kind) VALUES (0, 'basedata'); 187 INSERT INTO wst_kinds (id, kind) VALUES (0, 'basedata');
190 INSERT INTO wst_kinds (id, kind) VALUES (1, 'basedata_additionals_marks'); 188 INSERT INTO wst_kinds (id, kind) VALUES (1, 'basedata_additionals_marks');
191 INSERT INTO wst_kinds (id, kind) VALUES (2, 'basedata_fixations_wst'); 189 INSERT INTO wst_kinds (id, kind) VALUES (2, 'basedata_fixations_wst');
197 195
198 196
199 CREATE SEQUENCE WSTS_ID_SEQ; 197 CREATE SEQUENCE WSTS_ID_SEQ;
200 198
201 CREATE TABLE wsts ( 199 CREATE TABLE wsts (
202 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 200 id int PRIMARY KEY NOT NULL,
203 river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, 201 river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE,
204 description VARCHAR(256) NOT NULL, 202 description VARCHAR(256) NOT NULL,
205 kind NUMERIC(9,0) NOT NULL REFERENCES wst_kinds(id) DEFAULT 0, 203 kind int NOT NULL REFERENCES wst_kinds(id) DEFAULT 0,
206 -- TODO: more meta infos 204 -- TODO: more meta infos
207 UNIQUE (river_id, description) 205 UNIQUE (river_id, description)
208 ); 206 );
209 207
210 -- columns of WST files 208 -- columns of WST files
211 CREATE SEQUENCE WST_COLUMNS_ID_SEQ; 209 CREATE SEQUENCE WST_COLUMNS_ID_SEQ;
212 210
213 CREATE TABLE wst_columns ( 211 CREATE TABLE wst_columns (
214 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 212 id int PRIMARY KEY NOT NULL,
215 wst_id NUMERIC(9,0) NOT NULL REFERENCES wsts(id) ON DELETE CASCADE, 213 wst_id int NOT NULL REFERENCES wsts(id) ON DELETE CASCADE,
216 name VARCHAR(256) NOT NULL, 214 name VARCHAR(256) NOT NULL,
217 description VARCHAR(256), 215 description VARCHAR(256),
218 source VARCHAR(256), 216 source VARCHAR(256),
219 position NUMERIC(9,0) NOT NULL DEFAULT 0, 217 position int NOT NULL DEFAULT 0,
220 218
221 time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), 219 time_interval_id int REFERENCES time_intervals(id),
222 220
223 UNIQUE (wst_id, name), 221 UNIQUE (wst_id, name),
224 UNIQUE (wst_id, position) 222 UNIQUE (wst_id, position)
225 ); 223 );
226 224
227 -- w values in WST file column 225 -- w values in WST file column
228 CREATE SEQUENCE WST_COLUMN_VALUES_ID_SEQ; 226 CREATE SEQUENCE WST_COLUMN_VALUES_ID_SEQ;
229 227
230 CREATE TABLE wst_column_values ( 228 CREATE TABLE wst_column_values (
231 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 229 id int PRIMARY KEY NOT NULL,
232 wst_column_id NUMERIC(9,0) NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, 230 wst_column_id int NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE,
233 position NUMERIC(9,5) NOT NULL, 231 position NUMERIC NOT NULL,
234 w NUMERIC(9,5) NOT NULL, 232 w NUMERIC NOT NULL,
235 233
236 UNIQUE (position, wst_column_id), 234 UNIQUE (position, wst_column_id),
237 UNIQUE (position, wst_column_id, w) 235 UNIQUE (position, wst_column_id, w)
238 ); 236 );
239 237
240 -- bind q values to range 238 -- bind q values to range
241 CREATE SEQUENCE WST_Q_RANGES_ID_SEQ; 239 CREATE SEQUENCE WST_Q_RANGES_ID_SEQ;
242 240
243 CREATE TABLE wst_q_ranges ( 241 CREATE TABLE wst_q_ranges (
244 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 242 id int PRIMARY KEY NOT NULL,
245 range_id NUMERIC(9,0) NOT NULL REFERENCES ranges(id) ON DELETE CASCADE, 243 range_id int NOT NULL REFERENCES ranges(id) ON DELETE CASCADE,
246 q NUMERIC(10,5) NOT NULL 244 q NUMERIC NOT NULL
247 ); 245 );
248 246
249 -- bind q ranges to wst columns 247 -- bind q ranges to wst columns
250 CREATE SEQUENCE WST_COLUMN_Q_RANGES_ID_SEQ; 248 CREATE SEQUENCE WST_COLUMN_Q_RANGES_ID_SEQ;
251 249
252 CREATE TABLE wst_column_q_ranges ( 250 CREATE TABLE wst_column_q_ranges (
253 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 251 id int PRIMARY KEY NOT NULL,
254 wst_column_id NUMERIC(9,0) NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, 252 wst_column_id int NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE,
255 wst_q_range_id NUMERIC(9,0) NOT NULL REFERENCES wst_q_ranges(id) ON DELETE CASCADE, 253 wst_q_range_id int NOT NULL REFERENCES wst_q_ranges(id) ON DELETE CASCADE,
256 254
257 UNIQUE (wst_column_id, wst_q_range_id) 255 UNIQUE (wst_column_id, wst_q_range_id)
258 ); 256 );
259 257
260 CREATE SEQUENCE OFFICIAL_LINES_ID_SEQ; 258 CREATE SEQUENCE OFFICIAL_LINES_ID_SEQ;
261 259
262 CREATE TABLE official_lines ( 260 CREATE TABLE official_lines (
263 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 261 id int PRIMARY KEY NOT NULL,
264 wst_column_id NUMERIC(9,0) NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE, 262 wst_column_id int NOT NULL REFERENCES wst_columns(id) ON DELETE CASCADE,
265 named_main_value_id NUMERIC(9,0) NOT NULL REFERENCES named_main_values(id) ON DELETE CASCADE, 263 named_main_value_id int NOT NULL REFERENCES named_main_values(id) ON DELETE CASCADE,
266 264
267 UNIQUE (wst_column_id, named_main_value_id) 265 UNIQUE (wst_column_id, named_main_value_id)
268 ); 266 );
269 267
270 CREATE VIEW wst_value_table AS 268 CREATE VIEW wst_value_table AS
315 -- data for the cross-sections 313 -- data for the cross-sections
316 314
317 CREATE SEQUENCE CROSS_SECTIONS_ID_SEQ; 315 CREATE SEQUENCE CROSS_SECTIONS_ID_SEQ;
318 316
319 CREATE TABLE cross_sections ( 317 CREATE TABLE cross_sections (
320 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 318 id int PRIMARY KEY NOT NULL,
321 river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, 319 river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE,
322 time_interval_id NUMERIC(9,0) REFERENCES time_intervals(id), 320 time_interval_id int REFERENCES time_intervals(id),
323 description VARCHAR(256) 321 description VARCHAR(256)
324 ); 322 );
325 323
326 CREATE SEQUENCE CROSS_SECTION_LINES_ID_SEQ; 324 CREATE SEQUENCE CROSS_SECTION_LINES_ID_SEQ;
327 325
328 CREATE TABLE cross_section_lines ( 326 CREATE TABLE cross_section_lines (
329 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 327 id int PRIMARY KEY NOT NULL,
330 km NUMERIC(9,5) NOT NULL, 328 km NUMERIC NOT NULL,
331 cross_section_id NUMERIC(9,0) NOT NULL REFERENCES cross_sections(id) ON DELETE CASCADE, 329 cross_section_id int NOT NULL REFERENCES cross_sections(id) ON DELETE CASCADE,
332 UNIQUE (km, cross_section_id) 330 UNIQUE (km, cross_section_id)
333 ); 331 );
334 332
335 CREATE SEQUENCE CROSS_SECTION_POINTS_ID_SEQ; 333 CREATE SEQUENCE CROSS_SECTION_POINTS_ID_SEQ;
336 334
337 CREATE TABLE cross_section_points ( 335 CREATE TABLE cross_section_points (
338 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 336 id int PRIMARY KEY NOT NULL,
339 cross_section_line_id NUMERIC(9,0) NOT NULL REFERENCES cross_section_lines(id) ON DELETE CASCADE, 337 cross_section_line_id int NOT NULL REFERENCES cross_section_lines(id) ON DELETE CASCADE,
340 col_pos NUMERIC(9,0) NOT NULL, 338 col_pos int NOT NULL,
341 x NUMERIC(7,2) NOT NULL, 339 x NUMERIC NOT NULL,
342 y NUMERIC(7,2) NOT NULL 340 y NUMERIC NOT NULL
343 ); 341 );
344 342
345 -- Indices for faster access of the points 343 -- Indices for faster access of the points
346 CREATE INDEX cross_section_lines_km_idx 344 CREATE INDEX cross_section_lines_km_idx
347 ON cross_section_lines(km); 345 ON cross_section_lines(km);
351 -- Hydraulische Kenngroessen 349 -- Hydraulische Kenngroessen
352 350
353 CREATE SEQUENCE HYKS_ID_SEQ; 351 CREATE SEQUENCE HYKS_ID_SEQ;
354 352
355 CREATE TABLE hyks ( 353 CREATE TABLE hyks (
356 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 354 id int PRIMARY KEY NOT NULL,
357 river_id NUMERIC(9,0) NOT NULL REFERENCES rivers(id) ON DELETE CASCADE, 355 river_id int NOT NULL REFERENCES rivers(id) ON DELETE CASCADE,
358 description VARCHAR(256) NOT NULL 356 description VARCHAR(256) NOT NULL
359 ); 357 );
360 358
361 CREATE SEQUENCE HYK_ENTRIES_ID_SEQ; 359 CREATE SEQUENCE HYK_ENTRIES_ID_SEQ;
362 360
363 --FIXME: make precision and scale of km column equal with the km columns of the other tables
364 CREATE TABLE hyk_entries ( 361 CREATE TABLE hyk_entries (
365 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 362 id int PRIMARY KEY NOT NULL,
366 hyk_id NUMERIC(9,0) NOT NULL REFERENCES hyks(id) ON DELETE CASCADE, 363 hyk_id int NOT NULL REFERENCES hyks(id) ON DELETE CASCADE,
367 km NUMERIC(7,2) NOT NULL, 364 km NUMERIC NOT NULL,
368 measure TIMESTAMP(0), 365 measure TIMESTAMP,
369 UNIQUE (hyk_id, km) 366 UNIQUE (hyk_id, km)
370 ); 367 );
371 368
372 CREATE SEQUENCE HYK_FORMATIONS_ID_SEQ; 369 CREATE SEQUENCE HYK_FORMATIONS_ID_SEQ;
373 370
374 CREATE TABLE hyk_formations ( 371 CREATE TABLE hyk_formations (
375 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 372 id int PRIMARY KEY NOT NULL,
376 formation_num NUMERIC(9,0) NOT NULL DEFAULT 0, 373 formation_num int NOT NULL DEFAULT 0,
377 hyk_entry_id NUMERIC(9,0) NOT NULL REFERENCES hyk_entries(id) ON DELETE CASCADE, 374 hyk_entry_id int NOT NULL REFERENCES hyk_entries(id) ON DELETE CASCADE,
378 top NUMERIC(6,2) NOT NULL, 375 top NUMERIC NOT NULL,
379 bottom NUMERIC(6,2) NOT NULL, 376 bottom NUMERIC NOT NULL,
380 distance_vl NUMERIC(8,2) NOT NULL, 377 distance_vl NUMERIC NOT NULL,
381 distance_hf NUMERIC(8,2) NOT NULL, 378 distance_hf NUMERIC NOT NULL,
382 distance_vr NUMERIC(8,2) NOT NULL, 379 distance_vr NUMERIC NOT NULL,
383 UNIQUE (hyk_entry_id, formation_num) 380 UNIQUE (hyk_entry_id, formation_num)
384 ); 381 );
385 382
386 CREATE SEQUENCE HYK_FLOW_ZONE_TYPES_ID_SEQ; 383 CREATE SEQUENCE HYK_FLOW_ZONE_TYPES_ID_SEQ;
387 384
388 CREATE TABLE hyk_flow_zone_types ( 385 CREATE TABLE hyk_flow_zone_types (
389 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 386 id int PRIMARY KEY NOT NULL,
390 name VARCHAR(50) NOT NULL UNIQUE, 387 name VARCHAR(50) NOT NULL UNIQUE,
391 description VARCHAR(256) 388 description VARCHAR(256)
392 ); 389 );
393 390
394 CREATE SEQUENCE HYK_FLOW_ZONES_ID_SEQ; 391 CREATE SEQUENCE HYK_FLOW_ZONES_ID_SEQ;
395 392
396 CREATE TABLE hyk_flow_zones ( 393 CREATE TABLE hyk_flow_zones (
397 id NUMERIC(9,0) PRIMARY KEY NOT NULL, 394 id int PRIMARY KEY NOT NULL,
398 formation_id NUMERIC(9,0) NOT NULL REFERENCES hyk_formations(id) ON DELETE CASCADE, 395 formation_id int NOT NULL REFERENCES hyk_formations(id) ON DELETE CASCADE,
399 type_id NUMERIC(9,0) NOT NULL REFERENCES hyk_flow_zone_types(id), 396 type_id int NOT NULL REFERENCES hyk_flow_zone_types(id),
400 a NUMERIC(7,2) NOT NULL, 397 a NUMERIC NOT NULL,
401 b NUMERIC(7,2) NOT NULL, 398 b NUMERIC NOT NULL,
402 CHECK (a <= b) 399 CHECK (a <= b)
403 ); 400 );
404 401
405 CREATE VIEW wst_ranges 402 CREATE VIEW wst_ranges
406 AS 403 AS

http://dive4elements.wald.intevation.org