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
  startdate timestamp,
101
  stopdate timestamp,
102
  d_obscount int(11),
103
  d_lastlocationaddeddate timestamp,
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 536 aaronmk
CREATE TABLE location
112
(
113
  location_id int(11) NOT NULL AUTO_INCREMENT,
114 570 aaronmk
  authorlocationcode character varying(30),
115 536 aaronmk
  reference_id int(11),
116
  parent_id int(11),
117
  reallatitude double precision,
118
  reallongitude double precision,
119
  locationaccuracy double precision,
120
  confidentialitystatus int(11) NOT NULL,
121
  confidentialityreason character varying(200),
122
  latitude double precision,
123
  longitude 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 570 aaronmk
  CONSTRAINT location_keys UNIQUE (reference_id , parent_id , authorlocationcode )
140 536 aaronmk
);
141
142
CREATE TABLE locationevent -- VegBank's observation table.
143
(
144
  locationevent_id int(11) NOT NULL AUTO_INCREMENT,
145
  previous_id int(11),
146
  location_id int(11) NOT NULL,
147
  project_id int(11),
148 570 aaronmk
  authoreventcode character varying(30),
149 561 aaronmk
  `... (truncated) ...` int(11),
150 536 aaronmk
  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 570 aaronmk
  CONSTRAINT locationevent_keys UNIQUE (location_id , project_id , authoreventcode )
159 536 aaronmk
);
160
161
CREATE TABLE taxonoccurrence -- VegBank's taxonobservation table.
162
(
163
  taxonoccurrence_id int(11) NOT NULL AUTO_INCREMENT,
164
  locationevent_id int(11) NOT NULL,
165
  authorplantname character varying(255),
166
  reference_id int(11),
167
  taxoninferencearea double precision,
168
  emb_taxonoccurrence int(11),
169 561 aaronmk
  `... (truncated) ...` int(11),
170 536 aaronmk
  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 int(11) NOT NULL AUTO_INCREMENT,
183
  taxonoccurrence_id int(11) NOT NULL,
184
  taxonbin_id int(11),
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 int(11),
192
  covercode character varying(10),
193
  count int(11) 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 int(11) NOT NULL AUTO_INCREMENT,
208
  aggregateoccurrence_id int(11) NOT NULL,
209 563 aaronmk
  overallheight double precision,
210
  overallheightaccuracy double precision,
211 536 aaronmk
  emb_individualplant int(11),
212 570 aaronmk
  authorplantcode character varying(20),
213 536 aaronmk
  accessioncode character varying(255),
214
  stemcount int(11),
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 570 aaronmk
  CONSTRAINT individualplant_keys UNIQUE (aggregateoccurrence_id , authorplantcode )
220 536 aaronmk
);
221
222
CREATE TABLE stem -- VegBank's stemlocation table.
223
(
224
  stem_id int(11) NOT NULL AUTO_INCREMENT,
225
  individualplant_id int(11) NOT NULL,
226 570 aaronmk
  authorstemcode character varying(20),
227 536 aaronmk
  xposition double precision,
228
  yposition double precision,
229
  health character varying(50),
230
  emb_stem int(11),
231
  diameter double precision,
232
  height double precision,
233
  heightaccuracy double precision,
234
  age double precision,
235
  accessioncode character varying(255),
236 556 aaronmk
  diameteraccuracy double precision,
237 536 aaronmk
  CONSTRAINT stem_pkey PRIMARY KEY (stem_id ),
238
  CONSTRAINT stem_individualplant_id FOREIGN KEY (individualplant_id)
239
      REFERENCES individualplant (individualplant_id) MATCH SIMPLE
240
      ON UPDATE CASCADE ON DELETE CASCADE,
241 570 aaronmk
  CONSTRAINT stem_keys UNIQUE (individualplant_id , authorstemcode )
242 536 aaronmk
);
243
244 537 aaronmk
CREATE TABLE specimen -- A herbarium specimen. Contains Darwin Core specimen data.
245
(
246
  specimen_id int(11) NOT NULL AUTO_INCREMENT,
247
  reference_id int(11) NOT NULL,
248
  collectioncode_dwc character varying(255),
249
  catalognumber_dwc character varying(255),
250
  collectiondate timestamp,
251
  collector_id int(11),
252
  museum_id int(11),
253
  sourceaccessionnumber character varying(100),
254
  accessioncode character varying(255),
255
  taxonoccurrence_id int(11),
256 572 aaronmk
  collectornumber_dwc character varying(255),
257 537 aaronmk
  CONSTRAINT specimen_pkey PRIMARY KEY (specimen_id ),
258
  CONSTRAINT specimen_collector_id FOREIGN KEY (collector_id)
259
      REFERENCES party (party_id) MATCH SIMPLE
260
      ON UPDATE CASCADE ON DELETE CASCADE,
261
  CONSTRAINT specimen_museum_id FOREIGN KEY (museum_id)
262
      REFERENCES party (party_id) MATCH SIMPLE
263
      ON UPDATE CASCADE ON DELETE CASCADE,
264
  CONSTRAINT specimen_reference_id_fkey FOREIGN KEY (reference_id)
265
      REFERENCES reference (reference_id) MATCH SIMPLE
266
      ON UPDATE CASCADE ON DELETE CASCADE,
267
  CONSTRAINT specimen_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
268
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
269
      ON UPDATE CASCADE ON DELETE CASCADE,
270
  CONSTRAINT specimen_keys UNIQUE (reference_id , collectioncode_dwc , catalognumber_dwc )
271
);
272
273 544 aaronmk
CREATE TABLE voucher
274
(
275
  voucher_id int(11) NOT NULL AUTO_INCREMENT,
276 545 aaronmk
  taxonoccurrence_id int(11) NOT NULL,
277
  specimen_id int(11) NOT NULL,
278 544 aaronmk
  accessioncode character varying(255),
279
  CONSTRAINT voucher_pkey PRIMARY KEY (voucher_id ),
280
  CONSTRAINT voucher_specimen_id FOREIGN KEY (specimen_id)
281
      REFERENCES specimen (specimen_id) MATCH SIMPLE
282
      ON UPDATE CASCADE ON DELETE CASCADE,
283
  CONSTRAINT voucher_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
284
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
285
      ON UPDATE CASCADE ON DELETE CASCADE,
286
  CONSTRAINT voucher_keys UNIQUE (taxonoccurrence_id , specimen_id )
287
);
288
289 536 aaronmk
CREATE TABLE taxondetermination -- VegBank's taxoninterpretation table.
290
(
291
  taxondetermination_id int(11) NOT NULL AUTO_INCREMENT,
292
  taxonoccurrence_id int(11) NOT NULL,
293
  plantconcept_id int(11) NOT NULL,
294
  party_id int(11) NOT NULL,
295
  role_id int(11) NOT NULL,
296
  determinationtype character varying(30),
297
  reference_id int(11),
298
  originaldetermination int(1) NOT NULL,
299
  currentdetermination int(1) NOT NULL,
300
  taxonfit character varying(50),
301
  taxonconfidence character varying(50),
302
  grouptype character varying(20),
303
  notes text,
304
  notespublic int(1),
305
  notesmgt int(1),
306
  revisions int(1),
307 537 aaronmk
  determinationdate timestamp NOT NULL,
308 536 aaronmk
  emb_taxondetermination int(11),
309
  accessioncode character varying(255),
310
  CONSTRAINT taxondetermination_pkey PRIMARY KEY (taxondetermination_id ),
311
  CONSTRAINT taxondetermination_party_id FOREIGN KEY (party_id)
312
      REFERENCES party (party_id) MATCH SIMPLE
313
      ON UPDATE CASCADE ON DELETE CASCADE,
314
  CONSTRAINT taxondetermination_plantconcept_id FOREIGN KEY (plantconcept_id)
315
      REFERENCES plantconcept (plantconcept_id) MATCH SIMPLE
316
      ON UPDATE CASCADE ON DELETE CASCADE,
317
  CONSTRAINT taxondetermination_reference_id FOREIGN KEY (reference_id)
318
      REFERENCES reference (reference_id) MATCH SIMPLE
319
      ON UPDATE CASCADE ON DELETE CASCADE,
320
  CONSTRAINT taxondetermination_role_id FOREIGN KEY (role_id)
321
      REFERENCES aux_role (role_id) MATCH SIMPLE
322
      ON UPDATE CASCADE ON DELETE CASCADE,
323
  CONSTRAINT taxondetermination_taxonoccurrence_id FOREIGN KEY (taxonoccurrence_id)
324
      REFERENCES taxonoccurrence (taxonoccurrence_id) MATCH SIMPLE
325
      ON UPDATE CASCADE ON DELETE CASCADE
326
);
327
328 552 aaronmk
CREATE TABLE stratum
329
(
330
  stratum_id int(11) NOT NULL AUTO_INCREMENT,
331
  locationevent_id int(11) NOT NULL,
332
  stratumtype_id int(11) NOT NULL,
333
  stratummethod_id int(11),
334
  stratumname character varying(30),
335
  stratumheight double precision,
336
  stratumbase double precision,
337
  stratumcover double precision,
338
  stratumdescription character varying(200),
339
  CONSTRAINT stratum_pkey PRIMARY KEY (stratum_id ),
340
  CONSTRAINT stratum_locationevent_id FOREIGN KEY (locationevent_id)
341
      REFERENCES locationevent (locationevent_id) MATCH SIMPLE
342 559 aaronmk
      ON UPDATE CASCADE ON DELETE CASCADE
343 552 aaronmk
);
344
345 537 aaronmk
CREATE TABLE sizeclass -- A range of size measurements used to aggregate organisms.
346 536 aaronmk
(
347 537 aaronmk
  sizeclass_id int(11) NOT NULL AUTO_INCREMENT,
348
  mindiameter double precision,
349
  minheight double precision,
350
  maxdiameter double precision,
351
  maxheight double precision,
352 536 aaronmk
  accessioncode character varying(255),
353 537 aaronmk
  CONSTRAINT sizeclass_pkey PRIMARY KEY (sizeclass_id )
354 536 aaronmk
);
355
356
CREATE TABLE taxonbin -- Defines a set of aggregate measurements. Used by aggregateoccurrence to define how measurements were aggregated.
357
(
358
  taxonbin_id int(11) NOT NULL,
359
  label character varying(255) NOT NULL,
360
  stratum_id int(11),
361
  sizeclass_id int(11),
362
  coverindex_id int(11),
363
  accessioncode character varying(255),
364 567 aaronmk
  count int(11) NOT NULL,
365 536 aaronmk
  CONSTRAINT taxonbin_pkey PRIMARY KEY (taxonbin_id ),
366
  CONSTRAINT taxonbin_sizeclass_id FOREIGN KEY (sizeclass_id)
367
      REFERENCES sizeclass (sizeclass_id) MATCH SIMPLE
368
      ON UPDATE CASCADE ON DELETE CASCADE
369
);