Project

General

Profile

1
-- 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
CREATE TABLE namedplace
62
(
63
  namedplace_id serial NOT NULL,
64
  placesystem character varying(50),
65
  placename character varying(100) NOT NULL,
66
  placedescription text,
67
  placecode character varying(15),
68
  owner character varying(100),
69
  reference_id integer,
70
  d_obscount integer,
71
  accessioncode character varying(255),
72
  CONSTRAINT namedplace_pkey PRIMARY KEY (namedplace_id ),
73
  CONSTRAINT namedplace_reference_id FOREIGN KEY (reference_id)
74
      REFERENCES reference (reference_id) MATCH SIMPLE
75
      ON UPDATE CASCADE ON DELETE CASCADE,
76
  CONSTRAINT namedplace_keys UNIQUE (placesystem , placename )
77
);
78

    
79
CREATE TABLE place
80
(
81
  locationplace_id serial NOT NULL,
82
  location_id integer NOT NULL,
83
  calculated boolean,
84
  namedplace_id integer NOT NULL,
85
  CONSTRAINT place_pkey PRIMARY KEY (locationplace_id ),
86
  CONSTRAINT place_location_id FOREIGN KEY (location_id)
87
      REFERENCES location (location_id) MATCH SIMPLE
88
      ON UPDATE CASCADE ON DELETE CASCADE,
89
  CONSTRAINT place_namedplace_id FOREIGN KEY (namedplace_id)
90
      REFERENCES namedplace (namedplace_id) MATCH SIMPLE
91
      ON UPDATE CASCADE ON DELETE CASCADE,
92
  CONSTRAINT place_keys UNIQUE (location_id , namedplace_id )
93
);
94

    
95
CREATE TABLE project
96
(
97
  project_id serial NOT NULL,
98
  projectname character varying(150) NOT NULL,
99
  projectdescription text,
100
  startdate timestamp with time zone,
101
  stopdate timestamp with time zone,
102
  d_obscount integer,
103
  d_lastlocationaddeddate timestamp with time zone,
104
  accessioncode character varying(255),
105
  CONSTRAINT project_pkey PRIMARY KEY (project_id ),
106
  CONSTRAINT project_keys UNIQUE (projectname , startdate , stopdate )
107
);
108

    
109
-- New tables
110

    
111
CREATE TABLE location
112
(
113
  location_id serial NOT NULL,
114
  sourceid character varying(30),
115
  reference_id integer,
116
  parent_id integer,
117
  reallatitude double precision,
118
  reallongitude double precision,
119
  locationaccuracy double precision,
120
  confidentialitystatus integer NOT NULL,
121
  confidentialityreason character varying(200),
122
  latitude double precision,
123
  longitude double precision,
124
  -- ...
125
  accessioncode character varying(255),
126
  sublocationxposition double precision,
127
  sublocationyposition double precision,
128
  namedplace_id integer,
129
  CONSTRAINT location_pkey PRIMARY KEY (location_id ),
130
  CONSTRAINT location_namedplace_id FOREIGN KEY (namedplace_id)
131
      REFERENCES namedplace (namedplace_id) MATCH SIMPLE
132
      ON UPDATE CASCADE ON DELETE CASCADE,
133
  CONSTRAINT location_parent_id FOREIGN KEY (parent_id)
134
      REFERENCES location (location_id) MATCH SIMPLE
135
      ON UPDATE CASCADE ON DELETE CASCADE,
136
  CONSTRAINT location_reference_id FOREIGN KEY (reference_id)
137
      REFERENCES reference (reference_id) MATCH SIMPLE
138
      ON UPDATE CASCADE ON DELETE CASCADE,
139
  CONSTRAINT location_keys UNIQUE (reference_id , parent_id , sourceid )
140
);
141

    
142
CREATE TABLE locationevent -- VegBank's observation table.
143
(
144
  locationevent_id serial NOT NULL,
145
  previous_id integer,
146
  location_id integer NOT NULL,
147
  project_id integer,
148
  sourceid character varying(30),
149
  -- ...
150
  accessioncode character varying(255),
151
  CONSTRAINT locationevent_pkey PRIMARY KEY (locationevent_id ),
152
  CONSTRAINT locationevent_location_id FOREIGN KEY (location_id)
153
      REFERENCES location (location_id) MATCH SIMPLE
154
      ON UPDATE CASCADE ON DELETE CASCADE,
155
  CONSTRAINT locationevent_project_id FOREIGN KEY (project_id)
156
      REFERENCES project (project_id) MATCH SIMPLE
157
      ON UPDATE CASCADE ON DELETE CASCADE,
158
  CONSTRAINT locationevent_keys UNIQUE (location_id , project_id , sourceid )
159
);
160

    
161
CREATE TABLE taxonoccurrence -- VegBank's taxonobservation table.
162
(
163
  taxonoccurrence_id serial NOT NULL,
164
  locationevent_id integer NOT NULL,
165
  authorplantname character varying(255),
166
  reference_id integer,
167
  taxoninferencearea double precision,
168
  emb_taxonoccurrence integer,
169
  -- ...
170
  accessioncode character varying(255),
171
  CONSTRAINT taxonoccurrence_pkey PRIMARY KEY (taxonoccurrence_id ),
172
  CONSTRAINT taxonoccurrence_locationevent_id FOREIGN KEY (locationevent_id)
173
      REFERENCES locationevent (locationevent_id) MATCH SIMPLE
174
      ON UPDATE CASCADE ON DELETE CASCADE,
175
  CONSTRAINT taxonoccurrence_reference_id FOREIGN KEY (reference_id)
176
      REFERENCES reference (reference_id) MATCH SIMPLE
177
      ON UPDATE CASCADE ON DELETE CASCADE
178
);
179

    
180
CREATE TABLE aggregateoccurrence -- VegBank's taxonimportance table.
181
(
182
  aggregateoccurrence_id serial NOT NULL,
183
  taxonoccurrence_id integer NOT NULL,
184
  taxonbin_id integer,
185
  cover double precision,
186
  basalarea double precision,
187
  biomass double precision,
188
  inferencearea double precision,
189
  stratumbase double precision,
190
  stratumheight double precision,
191
  emb_aggregateoccurrence integer,
192
  covercode character varying(10),
193
  count integer NOT NULL,
194
  accessioncode character varying(255),
195
  CONSTRAINT aggregateoccurrence_pkey PRIMARY KEY (aggregateoccurrence_id ),
196
  CONSTRAINT aggregateoccurrence_taxonbin_id FOREIGN KEY (taxonbin_id)
197
      REFERENCES taxonbin (taxonbin_id) MATCH SIMPLE
198
      ON UPDATE CASCADE ON DELETE CASCADE,
199
  CONSTRAINT aggregateoccurrence_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
200
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
201
      ON UPDATE CASCADE ON DELETE CASCADE,
202
  CONSTRAINT aggregateoccurrence_keys UNIQUE (taxonoccurrence_id , taxonbin_id )
203
);
204

    
205
CREATE TABLE individualplant -- VegBank's stemcount table.
206
(
207
  individualplant_id serial NOT NULL,
208
  aggregateoccurrence_id integer NOT NULL,
209
  height double precision,
210
  heightaccuracy double precision,
211
  emb_individualplant integer,
212
  sourceid character varying(20),
213
  accessioncode character varying(255),
214
  stemcount integer,
215
  CONSTRAINT individualplant_pkey PRIMARY KEY (individualplant_id ),
216
  CONSTRAINT individualplant_aggregateoccurrence_id FOREIGN KEY (aggregateoccurrence_id)
217
      REFERENCES aggregateoccurrence (aggregateoccurrence_id) MATCH SIMPLE
218
      ON UPDATE CASCADE ON DELETE CASCADE,
219
  CONSTRAINT individualplant_keys UNIQUE (aggregateoccurrence_id , sourceid )
220
);
221

    
222
CREATE TABLE stem -- VegBank's stemlocation table.
223
(
224
  stem_id serial NOT NULL,
225
  individualplant_id integer NOT NULL,
226
  sourceid character varying(20),
227
  xposition double precision,
228
  yposition double precision,
229
  health character varying(50),
230
  emb_stem integer,
231
  diameter double precision,
232
  height double precision,
233
  heightaccuracy double precision,
234
  age double precision,
235
  accessioncode character varying(255),
236
  CONSTRAINT stem_pkey PRIMARY KEY (stem_id ),
237
  CONSTRAINT stem_individualplant_id FOREIGN KEY (individualplant_id)
238
      REFERENCES individualplant (individualplant_id) MATCH SIMPLE
239
      ON UPDATE CASCADE ON DELETE CASCADE,
240
  CONSTRAINT stem_keys UNIQUE (individualplant_id , sourceid )
241
);
242

    
243
CREATE TABLE specimen -- A herbarium specimen. Contains Darwin Core specimen data.
244
(
245
  specimen_id serial NOT NULL,
246
  reference_id integer NOT NULL,
247
  collectioncode_dwc character varying(255),
248
  catalognumber_dwc character varying(255),
249
  collectiondate timestamp with time zone,
250
  collector_id integer,
251
  museum_id integer,
252
  sourceaccessionnumber character varying(100),
253
  accessioncode character varying(255),
254
  taxonoccurrence_id integer,
255
  CONSTRAINT specimen_pkey PRIMARY KEY (specimen_id ),
256
  CONSTRAINT specimen_collector_id FOREIGN KEY (collector_id)
257
      REFERENCES party (party_id) MATCH SIMPLE
258
      ON UPDATE CASCADE ON DELETE CASCADE,
259
  CONSTRAINT specimen_museum_id FOREIGN KEY (museum_id)
260
      REFERENCES party (party_id) MATCH SIMPLE
261
      ON UPDATE CASCADE ON DELETE CASCADE,
262
  CONSTRAINT specimen_reference_id_fkey FOREIGN KEY (reference_id)
263
      REFERENCES reference (reference_id) MATCH SIMPLE
264
      ON UPDATE CASCADE ON DELETE CASCADE,
265
  CONSTRAINT specimen_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
266
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
267
      ON UPDATE CASCADE ON DELETE CASCADE,
268
  CONSTRAINT specimen_keys UNIQUE (reference_id , collectioncode_dwc , catalognumber_dwc )
269
);
270

    
271
CREATE TABLE voucher
272
(
273
  voucher_id serial NOT NULL,
274
  taxonoccurrence_id integer NOT NULL,
275
  specimen_id integer NOT NULL,
276
  accessioncode character varying(255),
277
  CONSTRAINT voucher_pkey PRIMARY KEY (voucher_id ),
278
  CONSTRAINT voucher_specimen_id FOREIGN KEY (specimen_id)
279
      REFERENCES specimen (specimen_id) MATCH SIMPLE
280
      ON UPDATE CASCADE ON DELETE CASCADE,
281
  CONSTRAINT voucher_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
282
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
283
      ON UPDATE CASCADE ON DELETE CASCADE,
284
  CONSTRAINT voucher_keys UNIQUE (taxonoccurrence_id , specimen_id )
285
);
286

    
287
CREATE TABLE taxondetermination -- VegBank's taxoninterpretation table.
288
(
289
  taxondetermination_id serial NOT NULL,
290
  taxonoccurrence_id integer NOT NULL,
291
  plantconcept_id integer NOT NULL,
292
  party_id integer NOT NULL,
293
  role_id integer NOT NULL,
294
  determinationtype character varying(30),
295
  reference_id integer,
296
  originaldetermination boolean NOT NULL,
297
  currentdetermination boolean NOT NULL,
298
  taxonfit character varying(50),
299
  taxonconfidence character varying(50),
300
  grouptype character varying(20),
301
  notes text,
302
  notespublic boolean,
303
  notesmgt boolean,
304
  revisions boolean,
305
  determinationdate timestamp with time zone NOT NULL,
306
  emb_taxondetermination integer,
307
  accessioncode character varying(255),
308
  CONSTRAINT taxondetermination_pkey PRIMARY KEY (taxondetermination_id ),
309
  CONSTRAINT taxondetermination_party_id FOREIGN KEY (party_id)
310
      REFERENCES party (party_id) MATCH SIMPLE
311
      ON UPDATE CASCADE ON DELETE CASCADE,
312
  CONSTRAINT taxondetermination_plantconcept_id FOREIGN KEY (plantconcept_id)
313
      REFERENCES plantconcept (plantconcept_id) MATCH SIMPLE
314
      ON UPDATE CASCADE ON DELETE CASCADE,
315
  CONSTRAINT taxondetermination_reference_id FOREIGN KEY (reference_id)
316
      REFERENCES reference (reference_id) MATCH SIMPLE
317
      ON UPDATE CASCADE ON DELETE CASCADE,
318
  CONSTRAINT taxondetermination_role_id FOREIGN KEY (role_id)
319
      REFERENCES aux_role (role_id) MATCH SIMPLE
320
      ON UPDATE CASCADE ON DELETE CASCADE,
321
  CONSTRAINT taxondetermination_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
322
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
323
      ON UPDATE CASCADE ON DELETE CASCADE
324
);
325

    
326
CREATE TABLE stratum
327
(
328
  stratum_id serial NOT NULL,
329
  locationevent_id integer NOT NULL,
330
  stratumtype_id integer NOT NULL,
331
  stratummethod_id integer,
332
  stratumname character varying(30),
333
  stratumheight double precision,
334
  stratumbase double precision,
335
  stratumcover double precision,
336
  stratumdescription character varying(200),
337
  CONSTRAINT stratum_pkey PRIMARY KEY (stratum_id ),
338
  CONSTRAINT stratum_locationevent_id FOREIGN KEY (locationevent_id)
339
      REFERENCES locationevent (locationevent_id) MATCH SIMPLE
340
      ON UPDATE CASCADE ON DELETE CASCADE,
341
);
342

    
343
CREATE TABLE sizeclass -- A range of size measurements used to aggregate organisms.
344
(
345
  sizeclass_id serial NOT NULL,
346
  mindiameter double precision,
347
  diameteraccuracy double precision,
348
  minheight double precision,
349
  heightaccuracy double precision,
350
  maxdiameter double precision,
351
  maxheight double precision,
352
  accessioncode character varying(255),
353
  CONSTRAINT sizeclass_pkey PRIMARY KEY (sizeclass_id )
354
);
355

    
356
CREATE TABLE taxonbin -- Defines a set of aggregate measurements. Used by aggregateoccurrence to define how measurements were aggregated.
357
(
358
  taxonbin_id integer NOT NULL,
359
  label character varying(255) NOT NULL,
360
  stratum_id integer,
361
  sizeclass_id integer,
362
  coverindex_id integer,
363
  accessioncode character varying(255),
364
  CONSTRAINT taxonbin_pkey PRIMARY KEY (taxonbin_id ),
365
  CONSTRAINT taxonbin_sizeclass_id FOREIGN KEY (sizeclass_id)
366
      REFERENCES sizeclass (sizeclass_id) MATCH SIMPLE
367
      ON UPDATE CASCADE ON DELETE CASCADE
368
);
(8-8/12)