Project

General

Profile

1 537 aaronmk
-- Existing tables
2
3
CREATE TABLE aux_role
4
(
5
  role_id int(11) NOT NULL AUTO_INCREMENT,
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 int(11) NOT NULL AUTO_INCREMENT,
14
  shortname character varying(250),
15
  fulltext__ text,
16
  referencetype character varying(250)
17
);
18
19
CREATE TABLE party
20
(
21
  party_id int(11) NOT NULL AUTO_INCREMENT,
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 int(11) NOT NULL AUTO_INCREMENT,
32
  plantname character varying(255) NOT NULL,
33
  reference_id int(11),
34
  dateentered timestamp 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 int(11) NOT NULL AUTO_INCREMENT,
44
  plantname_id int(11) NOT NULL,
45
  reference_id int(11) NOT NULL,
46
  plantname character varying(200),
47
  plantcode character varying(23),
48
  plantdescription text,
49
  d_obscount int(11),
50
  d_currentaccepted int(1),
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 int(11) NOT NULL AUTO_INCREMENT,
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 int(11),
70
  d_obscount int(11),
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 566 aaronmk
CREATE TABLE locationplace
80 552 aaronmk
(
81
  locationplace_id int(11) NOT NULL AUTO_INCREMENT,
82
  location_id int(11) NOT NULL,
83
  calculated int(1),
84
  namedplace_id int(11) NOT NULL,
85 566 aaronmk
  CONSTRAINT locationplace_pkey PRIMARY KEY (locationplace_id ),
86
  CONSTRAINT locationplace_location_id FOREIGN KEY (location_id)
87 552 aaronmk
      REFERENCES location (location_id) MATCH SIMPLE
88
      ON UPDATE CASCADE ON DELETE CASCADE,
89 566 aaronmk
  CONSTRAINT locationplace_namedplace_id FOREIGN KEY (namedplace_id)
90 552 aaronmk
      REFERENCES namedplace (namedplace_id) MATCH SIMPLE
91
      ON UPDATE CASCADE ON DELETE CASCADE,
92 566 aaronmk
  CONSTRAINT locationplace_keys UNIQUE (location_id , namedplace_id )
93 552 aaronmk
);
94
95 537 aaronmk
CREATE TABLE project
96
(
97
  project_id int(11) NOT NULL AUTO_INCREMENT,
98
  projectname character varying(150) NOT NULL,
99
  projectdescription text,
100 578 aaronmk
  startdate timestamp NULL,
101
  stopdate timestamp NULL,
102 537 aaronmk
  d_obscount int(11),
103 578 aaronmk
  d_lastlocationaddeddate timestamp NULL,
104 537 aaronmk
  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 536 aaronmk
CREATE TABLE location
112
(
113
  location_id int(11) NOT NULL AUTO_INCREMENT,
114 582 aaronmk
  authorlocationcode character varying(30),
115 536 aaronmk
  reference_id int(11),
116
  parent_id int(11),
117 582 aaronmk
  reallatitude double precision,
118
  reallongitude double precision,
119 536 aaronmk
  locationaccuracy double precision,
120 575 aaronmk
  confidentialitystatus int(11) NOT NULL DEFAULT 0,
121 536 aaronmk
  confidentialityreason character varying(200),
122 580 aaronmk
  publiclatitude double precision,
123
  publiclongitude double precision,
124 561 aaronmk
  `... (truncated) ...` int(11),
125 536 aaronmk
  accessioncode character varying(255),
126
  sublocationxposition double precision,
127
  sublocationyposition double precision,
128
  namedplace_id int(11),
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 582 aaronmk
  CONSTRAINT location_keys_code UNIQUE (reference_id , authorlocationcode ),
140
  CONSTRAINT location_keys_coords UNIQUE (reference_id , reallatitude , reallongitude ),
141
  CONSTRAINT location_keys_subplot_code UNIQUE (parent_id , authorlocationcode ),
142
  CONSTRAINT location_keys_subplot_coords UNIQUE (parent_id , sublocationxposition , sublocationyposition )
143 536 aaronmk
);
144
145
CREATE TABLE locationevent -- VegBank's observation table.
146
(
147
  locationevent_id int(11) NOT NULL AUTO_INCREMENT,
148
  previous_id int(11),
149
  location_id int(11) NOT NULL,
150
  project_id int(11),
151 570 aaronmk
  authoreventcode character varying(30),
152 561 aaronmk
  `... (truncated) ...` int(11),
153 536 aaronmk
  accessioncode character varying(255),
154 586 aaronmk
  sourceaccessioncode character varying(100),
155 536 aaronmk
  CONSTRAINT locationevent_pkey PRIMARY KEY (locationevent_id ),
156
  CONSTRAINT locationevent_location_id FOREIGN KEY (location_id)
157
      REFERENCES location (location_id) MATCH SIMPLE
158
      ON UPDATE CASCADE ON DELETE CASCADE,
159
  CONSTRAINT locationevent_project_id FOREIGN KEY (project_id)
160
      REFERENCES project (project_id) MATCH SIMPLE
161
      ON UPDATE CASCADE ON DELETE CASCADE,
162 586 aaronmk
  CONSTRAINT locationevent_keys_accessioncode UNIQUE (location_id , project_id , sourceaccessioncode ),
163
  CONSTRAINT locationevent_keys_code UNIQUE (location_id , project_id , authoreventcode )
164 536 aaronmk
);
165
166
CREATE TABLE taxonoccurrence -- VegBank's taxonobservation table.
167
(
168
  taxonoccurrence_id int(11) NOT NULL AUTO_INCREMENT,
169
  locationevent_id int(11) NOT NULL,
170
  authorplantname character varying(255),
171
  reference_id int(11),
172
  taxoninferencearea double precision,
173
  emb_taxonoccurrence int(11),
174 561 aaronmk
  `... (truncated) ...` int(11),
175 536 aaronmk
  accessioncode character varying(255),
176
  CONSTRAINT taxonoccurrence_pkey PRIMARY KEY (taxonoccurrence_id ),
177
  CONSTRAINT taxonoccurrence_locationevent_id FOREIGN KEY (locationevent_id)
178
      REFERENCES locationevent (locationevent_id) MATCH SIMPLE
179
      ON UPDATE CASCADE ON DELETE CASCADE,
180
  CONSTRAINT taxonoccurrence_reference_id FOREIGN KEY (reference_id)
181
      REFERENCES reference (reference_id) MATCH SIMPLE
182
      ON UPDATE CASCADE ON DELETE CASCADE
183
);
184
185
CREATE TABLE aggregateoccurrence -- VegBank's taxonimportance table.
186
(
187
  aggregateoccurrence_id int(11) NOT NULL AUTO_INCREMENT,
188
  taxonoccurrence_id int(11) NOT NULL,
189 584 aaronmk
  taxonbinmethod_id int(11),
190 536 aaronmk
  cover double precision,
191
  basalarea double precision,
192
  biomass double precision,
193
  inferencearea double precision,
194
  stratumbase double precision,
195
  stratumheight double precision,
196
  emb_aggregateoccurrence int(11),
197
  covercode character varying(10),
198
  count int(11) NOT NULL,
199
  accessioncode character varying(255),
200 586 aaronmk
  sourceaccessioncode character varying(100),
201 536 aaronmk
  CONSTRAINT aggregateoccurrence_pkey PRIMARY KEY (aggregateoccurrence_id ),
202 584 aaronmk
  CONSTRAINT aggregateoccurrence_taxonbinmethod_id FOREIGN KEY (taxonbinmethod_id)
203
      REFERENCES taxonbinmethod (taxonbinmethod_id) MATCH SIMPLE
204 536 aaronmk
      ON UPDATE CASCADE ON DELETE CASCADE,
205
  CONSTRAINT aggregateoccurrence_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
206
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
207
      ON UPDATE CASCADE ON DELETE CASCADE,
208 586 aaronmk
  CONSTRAINT aggregateoccurrence_keys_accessioncode UNIQUE (taxonoccurrence_id , sourceaccessioncode ),
209
  CONSTRAINT aggregateoccurrence_keys_method UNIQUE (taxonoccurrence_id , taxonbinmethod_id )
210 536 aaronmk
);
211
212
CREATE TABLE individualplant -- VegBank's stemcount table.
213
(
214
  individualplant_id int(11) NOT NULL AUTO_INCREMENT,
215
  aggregateoccurrence_id int(11) NOT NULL,
216 563 aaronmk
  overallheight double precision,
217
  overallheightaccuracy double precision,
218 536 aaronmk
  emb_individualplant int(11),
219 570 aaronmk
  authorplantcode character varying(20),
220 536 aaronmk
  accessioncode character varying(255),
221
  stemcount int(11),
222 586 aaronmk
  sourceaccessioncode character varying(100),
223 536 aaronmk
  CONSTRAINT individualplant_pkey PRIMARY KEY (individualplant_id ),
224
  CONSTRAINT individualplant_aggregateoccurrence_id FOREIGN KEY (aggregateoccurrence_id)
225
      REFERENCES aggregateoccurrence (aggregateoccurrence_id) MATCH SIMPLE
226
      ON UPDATE CASCADE ON DELETE CASCADE,
227 586 aaronmk
  CONSTRAINT individualplant_keys_accessioncode UNIQUE (aggregateoccurrence_id , sourceaccessioncode ),
228
  CONSTRAINT individualplant_keys_code UNIQUE (aggregateoccurrence_id , authorplantcode )
229 536 aaronmk
);
230
231
CREATE TABLE stem -- VegBank's stemlocation table.
232
(
233
  stem_id int(11) NOT NULL AUTO_INCREMENT,
234
  individualplant_id int(11) NOT NULL,
235 570 aaronmk
  authorstemcode character varying(20),
236 536 aaronmk
  xposition double precision,
237
  yposition double precision,
238
  health character varying(50),
239
  emb_stem int(11),
240
  diameter double precision,
241
  height double precision,
242
  heightaccuracy double precision,
243
  age double precision,
244
  accessioncode character varying(255),
245 556 aaronmk
  diameteraccuracy double precision,
246 586 aaronmk
  sourceaccessioncode character varying(100),
247 536 aaronmk
  CONSTRAINT stem_pkey PRIMARY KEY (stem_id ),
248
  CONSTRAINT stem_individualplant_id FOREIGN KEY (individualplant_id)
249
      REFERENCES individualplant (individualplant_id) MATCH SIMPLE
250
      ON UPDATE CASCADE ON DELETE CASCADE,
251 586 aaronmk
  CONSTRAINT stem_keys_accessioncode UNIQUE (individualplant_id , sourceaccessioncode ),
252
  CONSTRAINT stem_keys_code UNIQUE (individualplant_id , authorstemcode )
253 536 aaronmk
);
254
255 537 aaronmk
CREATE TABLE specimen -- A herbarium specimen. Contains Darwin Core specimen data.
256
(
257
  specimen_id int(11) NOT NULL AUTO_INCREMENT,
258
  reference_id int(11) NOT NULL,
259
  collectioncode_dwc character varying(255),
260
  catalognumber_dwc character varying(255),
261 578 aaronmk
  collectiondate timestamp NULL,
262 537 aaronmk
  collector_id int(11),
263
  museum_id int(11),
264 586 aaronmk
  sourceaccessioncode character varying(100),
265 537 aaronmk
  accessioncode character varying(255),
266 576 aaronmk
  taxonoccurrence_id int(11) NOT NULL,
267 572 aaronmk
  collectornumber_dwc character varying(255),
268 589 aaronmk
  authorspecimencode character varying(20),
269 537 aaronmk
  CONSTRAINT specimen_pkey PRIMARY KEY (specimen_id ),
270
  CONSTRAINT specimen_collector_id FOREIGN KEY (collector_id)
271
      REFERENCES party (party_id) MATCH SIMPLE
272
      ON UPDATE CASCADE ON DELETE CASCADE,
273
  CONSTRAINT specimen_museum_id FOREIGN KEY (museum_id)
274
      REFERENCES party (party_id) MATCH SIMPLE
275
      ON UPDATE CASCADE ON DELETE CASCADE,
276
  CONSTRAINT specimen_reference_id_fkey FOREIGN KEY (reference_id)
277
      REFERENCES reference (reference_id) MATCH SIMPLE
278
      ON UPDATE CASCADE ON DELETE CASCADE,
279
  CONSTRAINT specimen_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
280
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
281
      ON UPDATE CASCADE ON DELETE CASCADE,
282 586 aaronmk
  CONSTRAINT specimen_keys_accessioncode UNIQUE (reference_id , collectioncode_dwc , sourceaccessioncode ),
283 589 aaronmk
  CONSTRAINT specimen_keys_catalognumber UNIQUE (reference_id , collectioncode_dwc , catalognumber_dwc ),
284
  CONSTRAINT specimen_keys_code UNIQUE (reference_id , collectioncode_dwc , authorspecimencode )
285 537 aaronmk
);
286
287 544 aaronmk
CREATE TABLE voucher
288
(
289
  voucher_id int(11) NOT NULL AUTO_INCREMENT,
290 545 aaronmk
  taxonoccurrence_id int(11) NOT NULL,
291
  specimen_id int(11) NOT NULL,
292 544 aaronmk
  accessioncode character varying(255),
293
  CONSTRAINT voucher_pkey PRIMARY KEY (voucher_id ),
294
  CONSTRAINT voucher_specimen_id FOREIGN KEY (specimen_id)
295
      REFERENCES specimen (specimen_id) MATCH SIMPLE
296
      ON UPDATE CASCADE ON DELETE CASCADE,
297
  CONSTRAINT voucher_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
298
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
299
      ON UPDATE CASCADE ON DELETE CASCADE,
300
  CONSTRAINT voucher_keys UNIQUE (taxonoccurrence_id , specimen_id )
301
);
302
303 536 aaronmk
CREATE TABLE taxondetermination -- VegBank's taxoninterpretation table.
304
(
305
  taxondetermination_id int(11) NOT NULL AUTO_INCREMENT,
306
  taxonoccurrence_id int(11) NOT NULL,
307
  plantconcept_id int(11) NOT NULL,
308 575 aaronmk
  party_id int(11),
309 536 aaronmk
  role_id int(11) NOT NULL,
310
  determinationtype character varying(30),
311
  reference_id int(11),
312 575 aaronmk
  originaldetermination int(1) NOT NULL DEFAULT false,
313
  currentdetermination int(1) NOT NULL DEFAULT false,
314 536 aaronmk
  taxonfit character varying(50),
315
  taxonconfidence character varying(50),
316
  grouptype character varying(20),
317
  notes text,
318
  notespublic int(1),
319
  notesmgt int(1),
320
  revisions int(1),
321 537 aaronmk
  determinationdate timestamp NOT NULL,
322 536 aaronmk
  emb_taxondetermination int(11),
323
  accessioncode character varying(255),
324
  CONSTRAINT taxondetermination_pkey PRIMARY KEY (taxondetermination_id ),
325
  CONSTRAINT taxondetermination_party_id FOREIGN KEY (party_id)
326
      REFERENCES party (party_id) MATCH SIMPLE
327
      ON UPDATE CASCADE ON DELETE CASCADE,
328
  CONSTRAINT taxondetermination_plantconcept_id FOREIGN KEY (plantconcept_id)
329
      REFERENCES plantconcept (plantconcept_id) MATCH SIMPLE
330
      ON UPDATE CASCADE ON DELETE CASCADE,
331
  CONSTRAINT taxondetermination_reference_id FOREIGN KEY (reference_id)
332
      REFERENCES reference (reference_id) MATCH SIMPLE
333
      ON UPDATE CASCADE ON DELETE CASCADE,
334
  CONSTRAINT taxondetermination_role_id FOREIGN KEY (role_id)
335
      REFERENCES aux_role (role_id) MATCH SIMPLE
336
      ON UPDATE CASCADE ON DELETE CASCADE,
337
  CONSTRAINT taxondetermination_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
338
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
339
      ON UPDATE CASCADE ON DELETE CASCADE
340
);
341
342 552 aaronmk
CREATE TABLE stratum
343
(
344
  stratum_id int(11) NOT NULL AUTO_INCREMENT,
345
  locationevent_id int(11) NOT NULL,
346
  stratumtype_id int(11) NOT NULL,
347
  stratummethod_id int(11),
348
  stratumname character varying(30),
349
  stratumheight double precision,
350
  stratumbase double precision,
351
  stratumcover double precision,
352
  stratumdescription character varying(200),
353
  CONSTRAINT stratum_pkey PRIMARY KEY (stratum_id ),
354
  CONSTRAINT stratum_locationevent_id FOREIGN KEY (locationevent_id)
355
      REFERENCES locationevent (locationevent_id) MATCH SIMPLE
356 559 aaronmk
      ON UPDATE CASCADE ON DELETE CASCADE
357 552 aaronmk
);
358
359 537 aaronmk
CREATE TABLE sizeclass -- A range of size measurements used to aggregate organisms.
360 536 aaronmk
(
361 537 aaronmk
  sizeclass_id int(11) NOT NULL AUTO_INCREMENT,
362
  mindiameter double precision,
363
  minheight double precision,
364
  maxdiameter double precision,
365
  maxheight double precision,
366 536 aaronmk
  accessioncode character varying(255),
367 537 aaronmk
  CONSTRAINT sizeclass_pkey PRIMARY KEY (sizeclass_id )
368 536 aaronmk
);
369
370 584 aaronmk
CREATE TABLE taxonbinmethod -- Defines a set of aggregate measurements. Used by aggregateoccurrence to define how measurements were aggregated.
371 536 aaronmk
(
372 584 aaronmk
  taxonbinmethod_id int(11) NOT NULL,
373 583 aaronmk
  label character varying(255) NOT NULL DEFAULT '',
374 536 aaronmk
  stratum_id int(11),
375
  sizeclass_id int(11),
376
  coverindex_id int(11),
377
  accessioncode character varying(255),
378 584 aaronmk
  CONSTRAINT taxonbinmethod_pkey PRIMARY KEY (taxonbinmethod_id ),
379
  CONSTRAINT taxonbinmethod_sizeclass_id FOREIGN KEY (sizeclass_id)
380 536 aaronmk
      REFERENCES sizeclass (sizeclass_id) MATCH SIMPLE
381 583 aaronmk
      ON UPDATE CASCADE ON DELETE CASCADE,
382 584 aaronmk
  CONSTRAINT taxonbinmethod_keys UNIQUE (label , stratum_id , sizeclass_id , coverindex_id )
383 536 aaronmk
);