Project

General

Profile

1
/* ***************** 2011 STRI DB 'CREATE' MySQL Script *****************
2
 *									*
3
 *		Most of the 2011 db is based off of the 2007 db.	*
4
 *		This script creates the new tables of the 2011 db	*
5
 *		and creates the new attributes of existing tables	*
6
 *		Nothing is deleted in this script. The drop.sql		*
7
 *		script will remove excess data and schema.		*
8
 *									*
9
 ***********************************************************************/
10
 
11
/* ***************************** Developers *****************************
12
 *									*
13
 *		Bradley University, Computer Science Dept.		*
14
 *		Smithsonian Tropical Research Institute			*
15
 *									*
16
 *			2011 Capstone Project				*
17
 *		Mario Campos, Michael Koeber, Zach Caschetta 		*
18
 *									*	
19
 ***********************************************************************/
20

    
21
-- Quadrat TABLE
22
ALTER TABLE Tree DROP FOREIGN KEY `Tree_ibfk_1`;
23
ALTER TABLE CensusQuadrat DROP FOREIGN KEY `CensusQuadrat_ibfk_2`;
24
ALTER TABLE Quadrat DROP PRIMARY KEY;
25
ALTER TABLE Quadrat CHANGE COLUMN QuadratID QuadratID2 INT UNSIGNED;
26
ALTER TABLE Quadrat ADD COLUMN (Area FLOAT UNSIGNED, IsStandardShape ENUM('Y','N') NOT NULL);
27
ALTER TABLE Quadrat ADD COLUMN QuadratID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
28

    
29
-- CensusQuadrat TABLE
30
ALTER TABLE DataEntry DROP FOREIGN KEY `DataEntry_ibfk_1`;
31
ALTER TABLE DataCollection DROP FOREIGN KEY `DataCollection_ibfk_1`;
32
ALTER TABLE CensusQuadrat CHANGE COLUMN QuadratID QuadratID2 INT UNSIGNED;
33
ALTER TABLE CensusQuadrat ADD COLUMN QuadratID INT UNSIGNED NOT NULL;
34
UPDATE CensusQuadrat CQ, Quadrat Q SET CQ.QuadratID=Q.QuadratID WHERE CQ.QuadratID2=Q.QuadratID2 AND CQ.PlotID=Q.PlotID;
35
ALTER TABLE CensusQuadrat DROP PRIMARY KEY;
36
ALTER TABLE CensusQuadrat ADD COLUMN CensusQuadratID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
37
ALTER TABLE CensusQuadrat ADD FOREIGN KEY (`QuadratID`) REFERENCES `Quadrat` (`QuadratID`);
38

    
39
-- DataCollection TABLE
40
ALTER TABLE DataCollection DROP PRIMARY KEY;
41
ALTER TABLE DataCollection ADD COLUMN DataCollectionID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
42
ALTER TABLE DataCollection ADD COLUMN PersonnelRoleID INT UNSIGNED NOT NULL;
43
ALTER TABLE DataCollection CHANGE COLUMN QuadratID QuadratID2 INT UNSIGNED;
44
ALTER TABLE DataCollection ADD COLUMN QuadratID INT UNSIGNED NOT NULL;
45
UPDATE DataCollection D, Quadrat Q SET D.QuadratID=Q.QuadratID WHERE D.QuadratID2=Q.QuadratID2;
46
ALTER TABLE DataCollection ADD FOREIGN KEY (`QuadratID`) REFERENCES `Quadrat` (`QuadratID`);
47
ALTER TABLE DataCollection ADD FOREIGN KEY (`CensusID`)  REFERENCES `Census` (`CensusID`);
48

    
49
-- PersonnelRole TABLE
50
CREATE TABLE PersonnelRole (PersonnelRoleID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
51
       	     		    PersonnelID SMALLINT UNSIGNED NOT NULL,
52
			    RoleID SMALLINT UNSIGNED NOT NULL
53
			   )ENGINE=INNODB;
54
INSERT INTO PersonnelRole (PersonnelID,RoleID) SELECT PersonnelID, RoleID FROM DataCollection;
55
ALTER TABLE PersonnelRole ADD FOREIGN KEY (RoleID) REFERENCES RoleReference(RoleID);
56
ALTER TABLE PersonnelRole ADD FOREIGN KEY (PersonnelID) REFERENCES Personnel(PersonnelID);
57
UPDATE DataCollection D, PersonnelRole P SET D.PersonnelRoleID=P.PersonnelRoleID WHERE D.PersonnelID=P.PersonnelID AND D.RoleID=P.RoleID;
58
ALTER TABLE DataCollection DROP FOREIGN KEY `DataCollection_ibfk_2`;
59
ALTER TABLE DataCollection DROP FOREIGN KEY `DataCollection_ibfk_3`;
60
ALTER TABLE DataCollection ADD FOREIGN KEY (`PersonnelRoleID`) REFERENCES `PersonnelRole` (`PersonnelRoleID`);
61

    
62
-- Tree TABLE
63
ALTER TABLE Tree CHANGE COLUMN QuadratID QuadratID2 INT UNSIGNED;
64
ALTER TABLE Tree ADD COLUMN QuadratID INT UNSIGNED;
65
UPDATE Tree T, Quadrat Q SET T.QuadratID=Q.QuadratID WHERE T.QuadratID2=Q.QuadratID2;
66

    
67
-- Stem TABLE
68
ALTER TABLE Measurement DROP FOREIGN KEY `Measurement_ibfk_2`;
69
-- ALTER TABLE Remeasurement DROP FOREIGN KEY to stem --FINISH THIS LINE
70
ALTER TABLE Stem DROP PRIMARY KEY;
71
ALTER TABLE Stem ADD COLUMN (QuadratID INT UNSIGNED NOT NULL,
72
      	    	     	     StemNumber INT UNSIGNED NOT NULL,
73
			     Moved ENUM('Y','N') NOT NULL,
74
			     GX FLOAT,
75
			     GY FLOAT,
76
			     GZ FLOAT,
77
			     PX FLOAT,
78
			     PY FLOAT,
79
			     PZ FLOAT,
80
			     QX FLOAT,
81
			     QY FLOAT,
82
			     QZ FLOAT
83
			    );
84
UPDATE Stem S, Tree T SET S.QuadratID=T.QuadratID WHERE S.TreeID=T.TreeID;
85
UPDATE Stem S1, Stem S2 SET S1.StemNumber=S2.StemID WHERE S1.StemID=S2.StemID AND S1.TreeID=S2.TreeID;
86
UPDATE Stem S, Tree T SET S.QX=T.x, S.QY=T.y WHERE S.TreeID=T.TreeID;
87
ALTER TABLE Stem DROP COLUMN StemID;
88
ALTER TABLE Stem ADD COLUMN StemID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
89

    
90
-- Measurement(DBH) TABLE
91
ALTER TABLE LogMeasurementHistory DROP FOREIGN KEY `LogMeasurementHistory_ibfk_1`;
92
ALTER TABLE MeasurementAttributes DROP FOREIGN KEY `MeasurementAttributes_ibfk_1`;
93
ALTER TABLE Measurement DROP PRIMARY KEY;
94
ALTER TABLE Measurement ADD COLUMN DBHID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
95
ALTER TABLE Measurement ADD COLUMN Comments VARCHAR(128);
96
ALTER TABLE Measurement MODIFY COLUMN HOM CHAR(16);
97
UPDATE Measurement M, Stem S SET M.StemID=S.StemID WHERE M.StemID=S.StemNumber AND M.TreeID=S.TreeID;
98
ALTER TABLE Measurement ADD FOREIGN KEY (`StemID`) REFERENCES `Stem` (`StemID`);
99

    
100
-- MeasurementAttributes TABLE
101
ALTER TABLE MeasurementAttributes ADD COLUMN DBHID INT UNSIGNED;
102
UPDATE MeasurementAttributes MA, Measurement M SET MA.DBHID=M.DBHID WHERE MA.MeasureID=M.MeasureID;
103
ALTER TABLE MeasurementAttributes ADD FOREIGN KEY (`DBHID`) REFERENCES `Measurement` (`DBHID`);
104
ALTER TABLE LogMAttrHistory DROP FOREIGN KEY `LogMAttrHistory_ibfk_1`;
105
ALTER TABLE MeasurementAttributes DROP PRIMARY KEY;
106
ALTER TABLE MeasurementAttributes ADD COLUMN DBHAttID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
107

    
108
-- Remeasurement TABLE
109
ALTER TABLE RemeasAttribs DROP FOREIGN KEY `RemeasAttribs_ibfk_1`;
110
ALTER TABLE Remeasurement DROP PRIMARY KEY;
111
ALTER TABLE Remeasurement CHANGE COLUMN RemeasureID RemeasureID2 INT UNSIGNED;
112
ALTER TABLE Remeasurement ADD COLUMN RemeasureID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
113
UPDATE Remeasurement R, Stem S SET R.StemID=S.StemID WHERE R.StemID=S.StemNumber AND R.TreeID=S.TreeID;
114
ALTER TABLE Remeasurement ADD FOREIGN KEY (`StemID`) REFERENCES `Stem` (`StemID`);
115

    
116
-- RemeasAttribs TABLE
117
ALTER TABLE RemeasAttribs CHANGE COLUMN RemeasureID RemeasureID2 INT UNSIGNED;
118
ALTER TABLE RemeasAttribs ADD COLUMN RemeasureID INT UNSIGNED NOT NULL;
119
UPDATE RemeasAttribs RA, Remeasurement R SET RA.RemeasureID=R.RemeasureID WHERE RA.RemeasureID2=R.RemeasureID2;
120
ALTER TABLE RemeasAttribs DROP PRIMARY KEY;
121
ALTER TABLE RemeasAttribs ADD COLUMN RmAttID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
122
ALTER TABLE RemeasAttribs ADD FOREIGN KEY (`RemeasureID`) REFERENCES `Remeasurement` (`RemeasureID`);
123

    
124
-- TreeAttributes TABLE
125
ALTER TABLE LogTreeAttrHistory DROP FOREIGN KEY `LogTreeAttrHistory_ibfk_1`;
126
ALTER TABLE TreeAttributes DROP PRIMARY KEY;
127
ALTER TABLE TreeAttributes ADD COLUMN TAttID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
128

    
129
-- rename tables
130
ALTER TABLE Measurement RENAME TO DBH;
131
ALTER TABLE MeasurementAttributes RENAME TO DBHAttributes;
132

    
133
-- add new tables
134
CREATE TABLE IF NOT EXISTS FeatureTypes (
135
					   FeatureTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
136
					   Type VARCHAR(32) NOT NULL
137
					)  ENGINE=INNODB;
138

    
139
CREATE TABLE IF NOT EXISTS Features (
140
					FeatureID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
141
					FeatureTypeID INT UNSIGNED NOT NULL,
142
					Name VARCHAR(32) NOT NULL,
143
					ShortDescrip VARCHAR(32),
144
					LongDescrip VARCHAR(128),
145
					FOREIGN KEY (`FeatureTypeID`) REFERENCES `FeatureTypes` (`FeatureTypeID`)
146
				    )	ENGINE=INNODB;
147

    
148
CREATE TABLE IF NOT EXISTS Coordinates (
149
					  CoorID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
150
					  FeatureID INT UNSIGNED,
151
					  PlotID INT UNSIGNED,
152
					  QuadratID INT UNSIGNED,
153
					  GX FLOAT(8),
154
					  GY FLOAT(8),
155
					  GZ FLOAT(8),
156
					  PX FLOAT(8),
157
					  PY FLOAT(8),
158
					  PZ FLOAT(8),
159
					  QX FLOAT(8),
160
					  QY FLOAT(8),
161
					  QZ FLOAT(8),
162
					  CoordinateNo INT UNSIGNED,
163
					  FOREIGN KEY (`FeatureID`) REFERENCES `Features` (`FeatureID`),
164
					  FOREIGN KEY (`PlotID`) REFERENCES `Site` (`PlotID`),
165
					  FOREIGN KEY (`QuadratID`) REFERENCES `Quadrat` (`QuadratID`)
166
				       )  ENGINE=INNODB;
167

    
168
CREATE TABLE IF NOT EXISTS MeasurementType (
169
						MeasurementTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
170
						UOM VARCHAR(32) NOT NULL,
171
						Type VARCHAR(256)
172
					   )	ENGINE=INNODB;
173

    
174
CREATE TABLE IF NOT EXISTS Measurement (
175
					MeasureID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
176
					CensusID INT UNSIGNED NOT NULL,
177
					TreeID INT UNSIGNED NOT NULL,
178
					StemID INT UNSIGNED NOT NULL,
179
					MeasurementTypeID INT UNSIGNED NOT NULL,
180
					Measure VARCHAR(256) NOT NULL,
181
					ExactDate DATE NOT NULL,
182
					Comments VARCHAR(128),
183
					FOREIGN KEY (`CensusID`) REFERENCES `Census` (`CensusID`),
184
					FOREIGN KEY (`TreeID`) REFERENCES `Tree` (`TreeID`),
185
					FOREIGN KEY (`StemID`) REFERENCES `Stem` (`StemID`),
186
					FOREIGN KEY (`MeasurementTypeID`) REFERENCES `MeasurementType` (`MeasurementTypeID`)
187
				       )ENGINE=INNODB;
188

    
189
CREATE TABLE IF NOT EXISTS MeasurementAttributes (
190
       	     	    	   			  MAttID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
191
						  MeasureID INT UNSIGNED NOT NULL,
192
						  CensusID INT UNSIGNED NOT NULL,
193
						  TSMID INT UNSIGNED NOT NULL,
194
						  FOREIGN KEY (`MeasureID`) REFERENCES `Measurement` (`MeasureID`),
195
						  FOREIGN KEY (`CensusID`) REFERENCES `Census` (`CensusID`),
196
						  FOREIGN KEY (`TSMID`) REFERENCES `TSMAttributes` (`TSMID`)
197
						 )ENGINE=INNODB;
198

    
199
CREATE TABLE IF NOT EXISTS Log (
200
				LogID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
201
				PersonnelID SMALLINT UNSIGNED,
202
				ChangedTable VARCHAR(32) NOT NULL,
203
				PrimaryKey VARCHAR(32) NOT NULL,
204
				ChangedColumn VARCHAR(32) NOT NULL,
205
				ChangeDate DATE,
206
				ChangeTime TIMESTAMP,
207
				Description VARCHAR(256),
208
				Action ENUM('I','D','U') NOT NULL,
209
				Old VARCHAR(512) NOT NULL,
210
				New VARCHAR(512) NOT NULL,
211
				FOREIGN KEY (`PersonnelID`) REFERENCES `Personnel` (`PersonnelID`)
212
			       )ENGINE=INNODB;
213

    
214
-- modify existing tables to meet new schema's specs
215
ALTER TABLE Site ADD COLUMN (  Area INT UNSIGNED NOT NULL,
216
      	    	     	       QDimX INT UNSIGNED NOT NULL,
217
			       QDimY INT UNSIGNED NOT NULL,
218
			       GUOM VARCHAR(32) NOT NULL,
219
			       GZUOM VARCHAR(32) NOT NULL,
220
			       PUOM VARCHAR(32) NOT NULL,
221
			       QUOM VARCHAR(32) NOT NULL,
222
			       GCoorCollected VARCHAR(32),
223
			       PCoorCollected VARCHAR(32),
224
			       QCoorCollected VARCHAR(32)
225
			    ); 
226

    
227
ALTER TABLE Stem ADD COLUMN (	GX FLOAT(8),
228
				GY FLOAT(8),
229
				GZ FLOAT(8),
230
				PX FLOAT(8),
231
				PY FLOAT(8),
232
				PZ FLOAT(8),
233
				QX FLOAT(8),
234
				QY FLOAT(8),
235
				QZ FLOAT(8),
236
				Moved ENUM('Y','N') NOT NULL
237
			    );
238

    
239
ALTER TABLE Census MODIFY COLUMN PlotCensusNumber CHAR(16);
(1-1/3)