This repository has been archived by the owner on Mar 28, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
db-definition.sql
345 lines (304 loc) · 12.6 KB
/
db-definition.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
DROP DATABASE IF EXISTS linkServicesGroup;
CREATE DATABASE linkServicesGroup
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE linkServicesGroup;
CREATE TABLE StateTerritory
(
stateID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
stateName VARCHAR(30) UNIQUE NOT NULL,
stateAbbrev VARCHAR(3) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE Location
(
locationID SMALLINT NOT NULL PRIMARY KEY,
locationName VARCHAR(50) NOT NULL,
stateID TINYINT UNSIGNED NOT NULL,
postcodeNumber SMALLINT UNSIGNED NOT NULL,
latitude DECIMAL(10,7) NOT NULL DEFAULT 0,
longitude DECIMAL(10,7) NOT NULL DEFAULT 0,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
UNIQUE (postcodeNumber, locationName),
FOREIGN KEY (stateID) REFERENCES StateTerritory(stateID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE OtherLanguages
(
languageID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
languageName VARCHAR(50) UNIQUE NOT NULL
);
CREATE TABLE CulturalBackground
(
culturalBackgroundID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
culturalBackgroundName VARCHAR(50) UNIQUE NOT NULL
);
CREATE TABLE FearPhobia
(
fearPhobiaID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
fearPhobiaName VARCHAR(50) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE TechnologyForm
(
technologyID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
technologyName VARCHAR(50) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE Qualification
(
qualificationID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
qualificationName VARCHAR(150) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE ExperienceArea
(
experienceAreaID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
experienceAreaName VARCHAR(100) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE CheckClearance
(
checkClearanceID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
checkClearanceName VARCHAR(100) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE PersonalityTrait
(
traitID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
traitName VARCHAR(50) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE Hobby
(
hobbyID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
hobbyName VARCHAR(50) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE HobbyCategory
(
hobbyCategoryID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
hobbyCategoryName VARCHAR(50) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE HobbyGrouping
(
hobbyID SMALLINT UNSIGNED NOT NULL,
hobbyCategoryID TINYINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (hobbyID, hobbyCategoryID),
FOREIGN KEY (hobbyID) REFERENCES Hobby(hobbyID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (hobbyCategoryID) REFERENCES HobbyCategory(hobbyCategoryID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE GamingConsole
(
consoleID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
consoleName VARCHAR(50) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE Allergy
(
allergyID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
allergyName VARCHAR(50) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE DomesticAnimal
(
domesticAnimalID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
domesticAnimalName VARCHAR(50) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE ReferralSource
(
referralSourceID SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
referralSourceName VARCHAR(100) NOT NULL,
registerTimestamp DATETIME NOT NULL DEFAULT NOW(),
websiteURL VARCHAR(300),
activeFlag TINYINT(1) NOT NULL DEFAULT 1
);
CREATE TABLE ReferralSourceCompany
(
referralSourceID SMALLINT UNSIGNED NOT NULL PRIMARY KEY,
companyAddress VARCHAR(300) NOT NULL,
consultantName VARCHAR(100) NOT NULL,
consultantEmail VARCHAR(150) UNIQUE NOT NULL,
consultantPhone CHAR(10) UNIQUE NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
FOREIGN KEY (referralSourceID) REFERENCES ReferralSource(referralSourceID) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE SupportWorker
(
supportWorkerID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
emailAddress VARCHAR(300) UNIQUE NOT NULL,
driversLicenseNumber VARCHAR(35) UNIQUE NOT NULL,
phoneContactNumber VARCHAR(35) UNIQUE NOT NULL,
firstName VARCHAR(50) NOT NULL,
genderFlag TINYINT NOT NULL DEFAULT 0,
registerTimestamp DATETIME NOT NULL DEFAULT NOW(),
passwordString VARCHAR(100) NOT NULL,
dateOfBirth DATE NOT NULL,
feelsLikeAge TINYINT UNSIGNED,
locationID SMALLINT NOT NULL,
aboutDesc TEXT NOT NULL,
skillDesc TEXT NOT NULL,
apperanceDesc TEXT,
travelTimeMinutes SMALLINT UNSIGNED NOT NULL DEFAULT 30,
englishLanguageFlag TINYINT(1) NOT NULL,
signLanguageFlag TINYINT(1) NOT NULL,
spokenAccent VARCHAR(100) NOT NULL,
culturalBackgroundID TINYINT UNSIGNED NOT NULL,
vegetarianFlag TINYINT UNSIGNED NOT NULL DEFAULT 0,
petFriendlyFlag TINYINT(1) NOT NULL DEFAULT 0,
smokingStatusFlag TINYINT NOT NULL DEFAULT 0,
swimmingFlag TINYINT(1) NOT NULL DEFAULT 0,
seasickFlag TINYINT NOT NULL DEFAULT 0,
referralSourceID SMALLINT UNSIGNED NOT NULL,
wageSubsidyFlag TINYINT(1) NOT NULL DEFAULT 0,
interviewDay TINYINT UNSIGNED NOT NULL,
videoString CHAR(11),
profileViewCount INT NOT NULL DEFAULT 0,
availableFlag TINYINT(1) NOT NULL DEFAULT 0,
activeFlag TINYINT(1) NOT NULL DEFAULT 0,
FOREIGN KEY (locationID) REFERENCES Location(locationID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (culturalBackgroundID) REFERENCES CulturalBackground(culturalBackgroundID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (referralSourceID) REFERENCES ReferralSource(referralSourceID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerOtherLanguages
(
supportWorkerID INT NOT NULL,
languageID TINYINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, languageID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (languageID) REFERENCES OtherLanguages(languageID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerChecks
(
supportWorkerID INT NOT NULL,
checkClearanceID TINYINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, checkClearanceID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (checkClearanceID) REFERENCES CheckClearance(checkClearanceID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerPersonality
(
supportWorkerID INT NOT NULL,
traitID SMALLINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, traitID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (traitID) REFERENCES PersonalityTrait(traitID) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE SupportWorkerHobbies
(
supportWorkerID INT NOT NULL,
hobbyID SMALLINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, hobbyID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (hobbyID) REFERENCES Hobby(hobbyID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerGaming
(
supportWorkerID INT NOT NULL,
consoleID SMALLINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, consoleID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (consoleID) REFERENCES GamingConsole(consoleID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerAvaliability
(
supportWorkerID INT NOT NULL,
dayNumber TINYINT UNSIGNED NOT NULL,
hourNumber TINYINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, dayNumber, hourNumber),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerAllergies
(
supportWorkerID INT NOT NULL,
allergyID SMALLINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, allergyID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (allergyID) REFERENCES Allergy(allergyID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerPets
(
supportWorkerID INT NOT NULL,
domesticAnimalID TINYINT UNSIGNED NOT NULL,
petCount TINYINT UNSIGNED NOT NULL DEFAULT 1,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, domesticAnimalID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (domesticAnimalID) REFERENCES DomesticAnimal(domesticAnimalID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerFears
(
supportWorkerID INT NOT NULL,
fearPhobiaID SMALLINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, fearPhobiaID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (fearPhobiaID) REFERENCES FearPhobia(fearPhobiaID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerTechnology
(
supportWorkerID INT NOT NULL,
technologyID SMALLINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, technologyID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (technologyID) REFERENCES TechnologyForm(technologyID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerQualifications
(
supportWorkerID INT NOT NULL,
qualificationID SMALLINT UNSIGNED NOT NULL,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, qualificationID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (qualificationID) REFERENCES Qualification(qualificationID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerExperienceAreas
(
supportWorkerID INT NOT NULL,
experienceAreaID SMALLINT UNSIGNED NOT NULL,
experienceDesc TEXT,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, experienceAreaID),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (experienceAreaID) REFERENCES ExperienceArea(experienceAreaID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerPreviousExperience
(
supportWorkerID INT NOT NULL,
positionNumber TINYINT UNSIGNED NOT NULL,
positionTitle VARCHAR(200) NOT NULL,
positionCompany VARCHAR(200) NOT NULL,
positionDesc TEXT NOT NULL,
startDate DATE NOT NULL,
endDate DATE,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (supportWorkerID, positionNumber),
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION
);
CREATE TABLE SupportWorkerOther
(
supportWorkerID INT NOT NULL PRIMARY KEY,
otherPersonality TEXT,
otherHobbies TEXT,
otherGaming TEXT,
otherPets TEXT,
otherAllergies TEXT,
otherFears TEXT,
otherTechnology TEXT,
otherQualifications TEXT,
otherExperienceAreas TEXT,
otherAvailability TEXT,
otherGeneral TEXT,
activeFlag TINYINT(1) NOT NULL DEFAULT 1,
FOREIGN KEY (supportWorkerID) REFERENCES SupportWorker(supportWorkerID) ON UPDATE CASCADE ON DELETE NO ACTION
);