Project

General

Profile

1 537 aaronmk
-- Existing tables
2
3
CREATE TABLE aux_role
4
(
5
  role_id serial NOT NULL,
6
  rolecode character varying(30) NOT NULL,
7
  roledescription character varying(200),
8
  CONSTRAINT aux_role_pkey PRIMARY KEY (role_id )
9
);
10
11
CREATE TABLE reference
12
(
13
  reference_id serial NOT NULL,
14
  shortname character varying(250),
15
  fulltext text,
16
  referencetype character varying(250)
17
);
18
19
CREATE TABLE party
20
(
21
  party_id serial NOT NULL,
22
  salutation character varying(20),
23
  givenname character varying(50),
24
  middlename character varying(50),
25
  surname character varying(50),
26
  organizationname character varying(100)
27
);
28
29
CREATE TABLE plantname
30
(
31
  plantname_id serial NOT NULL,
32
  plantname character varying(255) NOT NULL,
33
  reference_id integer,
34
  dateentered timestamp with time zone DEFAULT now(),
35
  CONSTRAINT plantname_pkey PRIMARY KEY (plantname_id ),
36
  CONSTRAINT plantname_reference_id FOREIGN KEY (reference_id)
37
      REFERENCES reference (reference_id) MATCH SIMPLE
38
      ON UPDATE CASCADE ON DELETE CASCADE
39
);
40
41
CREATE TABLE plantconcept
42
(
43
  plantconcept_id serial NOT NULL,
44
  plantname_id integer NOT NULL,
45
  reference_id integer NOT NULL,
46
  plantname character varying(200),
47
  plantcode character varying(23),
48
  plantdescription text,
49
  d_obscount integer,
50
  d_currentaccepted boolean,
51
  accessioncode character varying(255),
52
  CONSTRAINT plantconcept_pkey PRIMARY KEY (plantconcept_id ),
53
  CONSTRAINT plantconcept_plantname_id FOREIGN KEY (plantname_id)
54
      REFERENCES plantname (plantname_id) MATCH SIMPLE
55
      ON UPDATE CASCADE ON DELETE CASCADE,
56
  CONSTRAINT plantconcept_reference_id FOREIGN KEY (reference_id)
57
      REFERENCES reference (reference_id) MATCH SIMPLE
58
      ON UPDATE CASCADE ON DELETE CASCADE
59
);
60
61 592 aaronmk
CREATE TABLE stratummethod
62
(
63
  stratummethod_id serial NOT NULL,
64
  reference_id integer,
65
  stratummethodname character varying(30) NOT NULL,
66
  stratummethoddescription text,
67
  stratumassignment character varying(50),
68
  accessioncode character varying(255),
69
  CONSTRAINT stratummethod_pkey PRIMARY KEY (stratummethod_id ),
70
  CONSTRAINT stratummethod_reference_id FOREIGN KEY (reference_id)
71
      REFERENCES reference (reference_id) MATCH SIMPLE
72
      ON UPDATE CASCADE ON DELETE CASCADE
73
);
74
75
CREATE TABLE stratumtype
76
(
77
  stratumtype_id serial NOT NULL,
78
  stratummethod_id integer NOT NULL,
79
  stratumindex character varying(10),
80
  stratumname character varying(30),
81
  stratumdescription text,
82
  CONSTRAINT stratumtype_pkey PRIMARY KEY (stratumtype_id ),
83
  CONSTRAINT stratumtype_stratummethod_id FOREIGN KEY (stratummethod_id)
84
      REFERENCES stratummethod (stratummethod_id) MATCH SIMPLE
85
      ON UPDATE CASCADE ON DELETE CASCADE
86
);
87
88 537 aaronmk
CREATE TABLE namedplace
89
(
90
  namedplace_id serial NOT NULL,
91
  placesystem character varying(50),
92
  placename character varying(100) NOT NULL,
93
  placedescription text,
94
  placecode character varying(15),
95
  owner character varying(100),
96
  reference_id integer,
97
  d_obscount integer,
98
  accessioncode character varying(255),
99
  CONSTRAINT namedplace_pkey PRIMARY KEY (namedplace_id ),
100
  CONSTRAINT namedplace_reference_id FOREIGN KEY (reference_id)
101
      REFERENCES reference (reference_id) MATCH SIMPLE
102
      ON UPDATE CASCADE ON DELETE CASCADE,
103
  CONSTRAINT namedplace_keys UNIQUE (placesystem , placename )
104
);
105
106 566 aaronmk
CREATE TABLE locationplace
107 552 aaronmk
(
108
  locationplace_id serial NOT NULL,
109
  location_id integer NOT NULL,
110
  calculated boolean,
111
  namedplace_id integer NOT NULL,
112 566 aaronmk
  CONSTRAINT locationplace_pkey PRIMARY KEY (locationplace_id ),
113
  CONSTRAINT locationplace_location_id FOREIGN KEY (location_id)
114 552 aaronmk
      REFERENCES location (location_id) MATCH SIMPLE
115
      ON UPDATE CASCADE ON DELETE CASCADE,
116 566 aaronmk
  CONSTRAINT locationplace_namedplace_id FOREIGN KEY (namedplace_id)
117 552 aaronmk
      REFERENCES namedplace (namedplace_id) MATCH SIMPLE
118
      ON UPDATE CASCADE ON DELETE CASCADE,
119 566 aaronmk
  CONSTRAINT locationplace_keys UNIQUE (location_id , namedplace_id )
120 552 aaronmk
);
121
122 537 aaronmk
CREATE TABLE project
123
(
124
  project_id serial NOT NULL,
125
  projectname character varying(150) NOT NULL,
126
  projectdescription text,
127
  startdate timestamp with time zone,
128
  stopdate timestamp with time zone,
129
  d_obscount integer,
130
  d_lastlocationaddeddate timestamp with time zone,
131
  accessioncode character varying(255),
132
  CONSTRAINT project_pkey PRIMARY KEY (project_id ),
133
  CONSTRAINT project_keys UNIQUE (projectname , startdate , stopdate )
134
);
135
136
-- New tables
137
138 535 aaronmk
CREATE TABLE location
139
(
140
  location_id serial NOT NULL,
141 582 aaronmk
  authorlocationcode character varying(30),
142 535 aaronmk
  reference_id integer,
143
  parent_id integer,
144 582 aaronmk
  reallatitude double precision,
145
  reallongitude double precision,
146 535 aaronmk
  locationaccuracy double precision,
147 575 aaronmk
  confidentialitystatus integer NOT NULL DEFAULT 0,
148 535 aaronmk
  confidentialityreason character varying(200),
149 580 aaronmk
  publiclatitude double precision,
150
  publiclongitude double precision,
151 561 aaronmk
  "... (truncated) ..." integer,
152 535 aaronmk
  accessioncode character varying(255),
153
  sublocationxposition double precision,
154
  sublocationyposition double precision,
155
  namedplace_id integer,
156
  CONSTRAINT location_pkey PRIMARY KEY (location_id ),
157
  CONSTRAINT location_namedplace_id FOREIGN KEY (namedplace_id)
158
      REFERENCES namedplace (namedplace_id) MATCH SIMPLE
159
      ON UPDATE CASCADE ON DELETE CASCADE,
160
  CONSTRAINT location_parent_id FOREIGN KEY (parent_id)
161
      REFERENCES location (location_id) MATCH SIMPLE
162
      ON UPDATE CASCADE ON DELETE CASCADE,
163
  CONSTRAINT location_reference_id FOREIGN KEY (reference_id)
164
      REFERENCES reference (reference_id) MATCH SIMPLE
165
      ON UPDATE CASCADE ON DELETE CASCADE,
166 582 aaronmk
  CONSTRAINT location_keys_code UNIQUE (reference_id , authorlocationcode ),
167
  CONSTRAINT location_keys_coords UNIQUE (reference_id , reallatitude , reallongitude ),
168
  CONSTRAINT location_keys_subplot_code UNIQUE (parent_id , authorlocationcode ),
169
  CONSTRAINT location_keys_subplot_coords UNIQUE (parent_id , sublocationxposition , sublocationyposition )
170 535 aaronmk
);
171
172
CREATE TABLE locationevent -- VegBank's observation table.
173
(
174
  locationevent_id serial NOT NULL,
175
  previous_id integer,
176
  location_id integer NOT NULL,
177
  project_id integer,
178 570 aaronmk
  authoreventcode character varying(30),
179 561 aaronmk
  "... (truncated) ..." integer,
180 535 aaronmk
  accessioncode character varying(255),
181 586 aaronmk
  sourceaccessioncode character varying(100),
182 535 aaronmk
  CONSTRAINT locationevent_pkey PRIMARY KEY (locationevent_id ),
183
  CONSTRAINT locationevent_location_id FOREIGN KEY (location_id)
184
      REFERENCES location (location_id) MATCH SIMPLE
185
      ON UPDATE CASCADE ON DELETE CASCADE,
186
  CONSTRAINT locationevent_project_id FOREIGN KEY (project_id)
187
      REFERENCES project (project_id) MATCH SIMPLE
188
      ON UPDATE CASCADE ON DELETE CASCADE,
189 586 aaronmk
  CONSTRAINT locationevent_keys_accessioncode UNIQUE (location_id , project_id , sourceaccessioncode ),
190
  CONSTRAINT locationevent_keys_code UNIQUE (location_id , project_id , authoreventcode )
191 535 aaronmk
);
192
193
CREATE TABLE taxonoccurrence -- VegBank's taxonobservation table.
194
(
195
  taxonoccurrence_id serial NOT NULL,
196
  locationevent_id integer NOT NULL,
197
  authorplantname character varying(255),
198
  reference_id integer,
199
  taxoninferencearea double precision,
200
  emb_taxonoccurrence integer,
201 561 aaronmk
  "... (truncated) ..." integer,
202 535 aaronmk
  accessioncode character varying(255),
203
  CONSTRAINT taxonoccurrence_pkey PRIMARY KEY (taxonoccurrence_id ),
204
  CONSTRAINT taxonoccurrence_locationevent_id FOREIGN KEY (locationevent_id)
205
      REFERENCES locationevent (locationevent_id) MATCH SIMPLE
206
      ON UPDATE CASCADE ON DELETE CASCADE,
207
  CONSTRAINT taxonoccurrence_reference_id FOREIGN KEY (reference_id)
208
      REFERENCES reference (reference_id) MATCH SIMPLE
209
      ON UPDATE CASCADE ON DELETE CASCADE
210
);
211
212
CREATE TABLE aggregateoccurrence -- VegBank's taxonimportance table.
213
(
214
  aggregateoccurrence_id serial NOT NULL,
215
  taxonoccurrence_id integer NOT NULL,
216 584 aaronmk
  taxonbinmethod_id integer,
217 535 aaronmk
  cover double precision,
218
  basalarea double precision,
219
  biomass double precision,
220
  inferencearea double precision,
221
  stratumbase double precision,
222
  stratumheight double precision,
223
  emb_aggregateoccurrence integer,
224
  covercode character varying(10),
225
  count integer NOT NULL,
226
  accessioncode character varying(255),
227 586 aaronmk
  sourceaccessioncode character varying(100),
228 535 aaronmk
  CONSTRAINT aggregateoccurrence_pkey PRIMARY KEY (aggregateoccurrence_id ),
229 584 aaronmk
  CONSTRAINT aggregateoccurrence_taxonbinmethod_id FOREIGN KEY (taxonbinmethod_id)
230
      REFERENCES taxonbinmethod (taxonbinmethod_id) MATCH SIMPLE
231 535 aaronmk
      ON UPDATE CASCADE ON DELETE CASCADE,
232
  CONSTRAINT aggregateoccurrence_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
233
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
234
      ON UPDATE CASCADE ON DELETE CASCADE,
235 586 aaronmk
  CONSTRAINT aggregateoccurrence_keys_accessioncode UNIQUE (taxonoccurrence_id , sourceaccessioncode ),
236
  CONSTRAINT aggregateoccurrence_keys_method UNIQUE (taxonoccurrence_id , taxonbinmethod_id )
237 535 aaronmk
);
238
239
CREATE TABLE individualplant -- VegBank's stemcount table.
240
(
241
  individualplant_id serial NOT NULL,
242
  aggregateoccurrence_id integer NOT NULL,
243 563 aaronmk
  overallheight double precision,
244
  overallheightaccuracy double precision,
245 535 aaronmk
  emb_individualplant integer,
246 570 aaronmk
  authorplantcode character varying(20),
247 535 aaronmk
  accessioncode character varying(255),
248
  stemcount integer,
249 586 aaronmk
  sourceaccessioncode character varying(100),
250 535 aaronmk
  CONSTRAINT individualplant_pkey PRIMARY KEY (individualplant_id ),
251
  CONSTRAINT individualplant_aggregateoccurrence_id FOREIGN KEY (aggregateoccurrence_id)
252
      REFERENCES aggregateoccurrence (aggregateoccurrence_id) MATCH SIMPLE
253
      ON UPDATE CASCADE ON DELETE CASCADE,
254 586 aaronmk
  CONSTRAINT individualplant_keys_accessioncode UNIQUE (aggregateoccurrence_id , sourceaccessioncode ),
255
  CONSTRAINT individualplant_keys_code UNIQUE (aggregateoccurrence_id , authorplantcode )
256 535 aaronmk
);
257
258
CREATE TABLE stem -- VegBank's stemlocation table.
259
(
260
  stem_id serial NOT NULL,
261
  individualplant_id integer NOT NULL,
262 570 aaronmk
  authorstemcode character varying(20),
263 535 aaronmk
  xposition double precision,
264
  yposition double precision,
265
  health character varying(50),
266
  emb_stem integer,
267
  diameter double precision,
268
  height double precision,
269
  heightaccuracy double precision,
270
  age double precision,
271
  accessioncode character varying(255),
272 556 aaronmk
  diameteraccuracy double precision,
273 586 aaronmk
  sourceaccessioncode character varying(100),
274 535 aaronmk
  CONSTRAINT stem_pkey PRIMARY KEY (stem_id ),
275
  CONSTRAINT stem_individualplant_id FOREIGN KEY (individualplant_id)
276
      REFERENCES individualplant (individualplant_id) MATCH SIMPLE
277
      ON UPDATE CASCADE ON DELETE CASCADE,
278 586 aaronmk
  CONSTRAINT stem_keys_accessioncode UNIQUE (individualplant_id , sourceaccessioncode ),
279
  CONSTRAINT stem_keys_code UNIQUE (individualplant_id , authorstemcode )
280 535 aaronmk
);
281
282 537 aaronmk
CREATE TABLE specimen -- A herbarium specimen. Contains Darwin Core specimen data.
283
(
284
  specimen_id serial NOT NULL,
285
  reference_id integer NOT NULL,
286
  collectioncode_dwc character varying(255),
287
  catalognumber_dwc character varying(255),
288
  collectiondate timestamp with time zone,
289
  collector_id integer,
290
  museum_id integer,
291 586 aaronmk
  sourceaccessioncode character varying(100),
292 537 aaronmk
  accessioncode character varying(255),
293 576 aaronmk
  taxonoccurrence_id integer NOT NULL,
294 572 aaronmk
  collectornumber_dwc character varying(255),
295 589 aaronmk
  authorspecimencode character varying(20),
296 537 aaronmk
  CONSTRAINT specimen_pkey PRIMARY KEY (specimen_id ),
297
  CONSTRAINT specimen_collector_id FOREIGN KEY (collector_id)
298
      REFERENCES party (party_id) MATCH SIMPLE
299
      ON UPDATE CASCADE ON DELETE CASCADE,
300
  CONSTRAINT specimen_museum_id FOREIGN KEY (museum_id)
301
      REFERENCES party (party_id) MATCH SIMPLE
302
      ON UPDATE CASCADE ON DELETE CASCADE,
303
  CONSTRAINT specimen_reference_id_fkey FOREIGN KEY (reference_id)
304
      REFERENCES reference (reference_id) MATCH SIMPLE
305
      ON UPDATE CASCADE ON DELETE CASCADE,
306
  CONSTRAINT specimen_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
307
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
308
      ON UPDATE CASCADE ON DELETE CASCADE,
309 586 aaronmk
  CONSTRAINT specimen_keys_accessioncode UNIQUE (reference_id , collectioncode_dwc , sourceaccessioncode ),
310 589 aaronmk
  CONSTRAINT specimen_keys_catalognumber UNIQUE (reference_id , collectioncode_dwc , catalognumber_dwc ),
311
  CONSTRAINT specimen_keys_code UNIQUE (reference_id , collectioncode_dwc , authorspecimencode )
312 537 aaronmk
);
313
314 544 aaronmk
CREATE TABLE voucher
315
(
316
  voucher_id serial NOT NULL,
317 545 aaronmk
  taxonoccurrence_id integer NOT NULL,
318
  specimen_id integer NOT NULL,
319 544 aaronmk
  accessioncode character varying(255),
320
  CONSTRAINT voucher_pkey PRIMARY KEY (voucher_id ),
321
  CONSTRAINT voucher_specimen_id FOREIGN KEY (specimen_id)
322
      REFERENCES specimen (specimen_id) MATCH SIMPLE
323
      ON UPDATE CASCADE ON DELETE CASCADE,
324
  CONSTRAINT voucher_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
325
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
326
      ON UPDATE CASCADE ON DELETE CASCADE,
327
  CONSTRAINT voucher_keys UNIQUE (taxonoccurrence_id , specimen_id )
328
);
329
330 535 aaronmk
CREATE TABLE taxondetermination -- VegBank's taxoninterpretation table.
331
(
332
  taxondetermination_id serial NOT NULL,
333
  taxonoccurrence_id integer NOT NULL,
334
  plantconcept_id integer NOT NULL,
335 575 aaronmk
  party_id integer,
336 535 aaronmk
  role_id integer NOT NULL,
337
  determinationtype character varying(30),
338
  reference_id integer,
339 575 aaronmk
  originaldetermination boolean NOT NULL DEFAULT false,
340
  currentdetermination boolean NOT NULL DEFAULT false,
341 535 aaronmk
  taxonfit character varying(50),
342
  taxonconfidence character varying(50),
343
  grouptype character varying(20),
344
  notes text,
345
  notespublic boolean,
346
  notesmgt boolean,
347
  revisions boolean,
348 591 aaronmk
  determinationdate timestamp with time zone,
349 535 aaronmk
  emb_taxondetermination integer,
350
  accessioncode character varying(255),
351
  CONSTRAINT taxondetermination_pkey PRIMARY KEY (taxondetermination_id ),
352
  CONSTRAINT taxondetermination_party_id FOREIGN KEY (party_id)
353
      REFERENCES party (party_id) MATCH SIMPLE
354
      ON UPDATE CASCADE ON DELETE CASCADE,
355
  CONSTRAINT taxondetermination_plantconcept_id FOREIGN KEY (plantconcept_id)
356
      REFERENCES plantconcept (plantconcept_id) MATCH SIMPLE
357
      ON UPDATE CASCADE ON DELETE CASCADE,
358
  CONSTRAINT taxondetermination_reference_id FOREIGN KEY (reference_id)
359
      REFERENCES reference (reference_id) MATCH SIMPLE
360
      ON UPDATE CASCADE ON DELETE CASCADE,
361
  CONSTRAINT taxondetermination_role_id FOREIGN KEY (role_id)
362
      REFERENCES aux_role (role_id) MATCH SIMPLE
363
      ON UPDATE CASCADE ON DELETE CASCADE,
364
  CONSTRAINT taxondetermination_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
365
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
366
      ON UPDATE CASCADE ON DELETE CASCADE
367
);
368
369 552 aaronmk
CREATE TABLE stratum
370
(
371
  stratum_id serial NOT NULL,
372
  locationevent_id integer NOT NULL,
373
  stratumtype_id integer NOT NULL,
374
  stratummethod_id integer,
375
  stratumname character varying(30),
376
  stratumheight double precision,
377
  stratumbase double precision,
378
  stratumcover double precision,
379
  stratumdescription character varying(200),
380
  CONSTRAINT stratum_pkey PRIMARY KEY (stratum_id ),
381
  CONSTRAINT stratum_locationevent_id FOREIGN KEY (locationevent_id)
382
      REFERENCES locationevent (locationevent_id) MATCH SIMPLE
383 592 aaronmk
      ON UPDATE CASCADE ON DELETE CASCADE,
384
  CONSTRAINT stratum_stratumtype_id FOREIGN KEY (stratumtype_id)
385
      REFERENCES stratumtype (stratumtype_id) MATCH SIMPLE
386 559 aaronmk
      ON UPDATE CASCADE ON DELETE CASCADE
387 552 aaronmk
);
388
389 537 aaronmk
CREATE TABLE sizeclass -- A range of size measurements used to aggregate organisms.
390 535 aaronmk
(
391 537 aaronmk
  sizeclass_id serial NOT NULL,
392
  mindiameter double precision,
393
  minheight double precision,
394
  maxdiameter double precision,
395
  maxheight double precision,
396 535 aaronmk
  accessioncode character varying(255),
397 537 aaronmk
  CONSTRAINT sizeclass_pkey PRIMARY KEY (sizeclass_id )
398 535 aaronmk
);
399
400 592 aaronmk
CREATE TABLE taxonbinmethod
401 535 aaronmk
(
402 584 aaronmk
  taxonbinmethod_id integer NOT NULL,
403 592 aaronmk
  label character varying(255),
404
  stratumtype_id integer,
405 535 aaronmk
  sizeclass_id integer,
406
  coverindex_id integer,
407
  accessioncode character varying(255),
408 584 aaronmk
  CONSTRAINT taxonbinmethod_pkey PRIMARY KEY (taxonbinmethod_id ),
409
  CONSTRAINT taxonbinmethod_sizeclass_id FOREIGN KEY (sizeclass_id)
410 535 aaronmk
      REFERENCES sizeclass (sizeclass_id) MATCH SIMPLE
411 583 aaronmk
      ON UPDATE CASCADE ON DELETE CASCADE,
412 592 aaronmk
  CONSTRAINT taxonbinmethod_stratumtype_id FOREIGN KEY (stratumtype_id)
413
      REFERENCES stratumtype (stratumtype_id) MATCH SIMPLE
414
      ON UPDATE CASCADE ON DELETE CASCADE
415 535 aaronmk
);