Repository navigation
Expand file tree
/
Copy pathdatabase.sql
More file actions
322 lines (296 loc) · 12.6 KB
/
Copy pathdatabase.sql
File metadata and controls
322 lines (296 loc) · 12.6 KB
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
-- Crear la base de datos
CREATE DATABASE IF NOT EXISTS holbie_talent_hub;
USE holbie_talent_hub;
-- Tabla "company_profiles"
CREATE TABLE IF NOT EXISTS company_profiles (
profile_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
company_name VARCHAR(255),
industry VARCHAR(255),
about_us TEXT,
-- description TEXT,
-- history TEXT,
-- us_values TEXT,
-- mission TEXT,
-- vision TEXT,
readme VARCHAR(512),
-- organization_culture TEXT,
retention_rate INT,
logo VARCHAR(512),
company_size INT UNSIGNED,
-- awards TEXT,
employee_benefits TEXT,
location VARCHAR(255),
website VARCHAR(512),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Tabla "professional_profiles"
CREATE TABLE IF NOT EXISTS professional_profiles (
profile_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
is_user BOOLEAN NOT NULL DEFAULT TRUE,
headline VARCHAR(255),
about_me VARCHAR(512),
profile VARCHAR(512),
readme VARCHAR(512),
location VARCHAR(255),
job_name VARCHAR(255),
kind_job ENUM('REMOTE', 'ONSITE', 'BOTH'),
job_type ENUM('FULL_TIME', 'PART_TIME', 'INTERNSHIP', 'CONTRACT', 'VOLUNTEER', 'OTHER'),
salary_min INT,
salary_max INT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Tabla "company_professional_profiles" n:m
CREATE TABLE IF NOT EXISTS company_professional_profiles (
company_id BIGINT UNSIGNED NOT NULL,
professional_profile_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (company_id, professional_profile_id),
FOREIGN KEY (company_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (professional_profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "projects"
CREATE TABLE IF NOT EXISTS projects (
project_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
description TEXT,
repository VARCHAR(255),
website VARCHAR(512),
start_date DATE,
end_date DATE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Tabla "professional_profiles_projects"
CREATE TABLE IF NOT EXISTS professional_profiles_projects (
profile_id BIGINT UNSIGNED NOT NULL,
project_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (profile_id, project_id),
FOREIGN KEY (profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
);
-- Tabla "users"
CREATE TABLE IF NOT EXISTS users (
user_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
role ENUM('ACADEMY-STUDENTS', 'ACADEMY-STAFF', 'ACADEMY-TALENT-COORDINATOR', 'COMPANY-STAFF', 'COMPANY-CTO', 'COMPANY-CEO', 'COMPANY-ADMIN', 'COMPANY-RECLUTER') NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
company_id BIGINT UNSIGNED NULL,
professional_id BIGINT UNSIGNED NULL UNIQUE,
FOREIGN KEY (company_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (professional_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "professional_profile_contacts"
CREATE TABLE IF NOT EXISTS professional_profile_contacts (
contact_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
contact_type VARCHAR(50),
contact_info VARCHAR(100),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
profile_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "company_contacts"
CREATE TABLE IF NOT EXISTS company_contacts (
contact_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
contact_type VARCHAR(50),
contact_info VARCHAR(100),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
company_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (company_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "project_contacts"
CREATE TABLE IF NOT EXISTS project_contacts (
contact_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
contact_type VARCHAR(50),
contact_info VARCHAR(100),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
project_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
);
-- Tabla "education"
CREATE TABLE IF NOT EXISTS education (
education_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
institution VARCHAR(255),
degree VARCHAR(255),
field_of_study VARCHAR(255),
start_date DATE,
end_date DATE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
profile_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "professional_profile_multimedia"
CREATE TABLE IF NOT EXISTS professional_profile_multimedia (
media_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
media_type VARCHAR(255),
description TEXT,
title VARCHAR(255),
file_path VARCHAR(255),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
profile_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "company_multimedia"
CREATE TABLE IF NOT EXISTS company_multimedia (
media_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
media_type VARCHAR(255),
description TEXT,
title VARCHAR(255),
file_path VARCHAR(255),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
profile_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (profile_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "education_multimedia"
CREATE TABLE IF NOT EXISTS education_multimedia (
media_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
media_type VARCHAR(255),
description TEXT,
title VARCHAR(255),
file_path VARCHAR(255),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
education_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (education_id) REFERENCES education(education_id) ON DELETE CASCADE
);
-- Tabla "project_multimedia"
CREATE TABLE IF NOT EXISTS project_multimedia (
media_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
media_type VARCHAR(255),
description TEXT,
title VARCHAR(255),
file_path VARCHAR(255),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
project_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
);
-- Tabla "skills"
CREATE TABLE IF NOT EXISTS skills (
skill_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
description TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Tabla "experience"
CREATE TABLE IF NOT EXISTS experience (
experience_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
company_name VARCHAR(255),
position VARCHAR(255),
description TEXT,
start_date DATE,
end_date DATE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
profile_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "applications"
CREATE TABLE IF NOT EXISTS applications (
application_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
status ENUM('PENDING', 'IN_PROGRESS', 'REJECTED', 'FINISHED') NOT NULL DEFAULT 'PENDING',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
company_id BIGINT UNSIGNED NOT NULL,
professional_id BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (company_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (professional_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE
);
-- Tabla "ratings"
CREATE TABLE IF NOT EXISTS ratings (
rating_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
positive_rating BOOLEAN NOT NULL DEFAULT TRUE,
comment TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
sender_id BIGINT UNSIGNED NOT NULL,
receiver_id BIGINT UNSIGNED NOT NULL,
UNIQUE KEY (sender_id, receiver_id),
FOREIGN KEY (sender_id) REFERENCES users(user_id) ON DELETE CASCADE,
FOREIGN KEY (receiver_id) REFERENCES users(user_id) ON DELETE CASCADE
);
-- Tabla "project_ratings"
CREATE TABLE IF NOT EXISTS project_ratings (
rating_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
positive_rating BOOLEAN NOT NULL DEFAULT TRUE,
comment TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
company_id BIGINT UNSIGNED NOT NULL,
project_id BIGINT UNSIGNED NOT NULL,
UNIQUE KEY (company_id, project_id),
FOREIGN KEY (company_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
);
-- Tabla "messages"
CREATE TABLE IF NOT EXISTS messages (
message_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
subject VARCHAR(255),
content TEXT,
type_connection ENUM('APPLICATION', 'PROJECT') NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
sender_id BIGINT UNSIGNED NOT NULL,
receiver_id BIGINT UNSIGNED NOT NULL,
application_id BIGINT UNSIGNED NULL,
project_id BIGINT UNSIGNED NULL,
FOREIGN KEY (sender_id) REFERENCES users(user_id) ON DELETE CASCADE,
FOREIGN KEY (receiver_id) REFERENCES users(user_id) ON DELETE CASCADE,
FOREIGN KEY (application_id) REFERENCES applications(application_id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
);
-- Tabla "professional_skills"
CREATE TABLE IF NOT EXISTS professional_skills (
profile_id BIGINT UNSIGNED NOT NULL,
skill_id BIGINT UNSIGNED NOT NULL,
proficiency_level INT DEFAULT 1,
PRIMARY KEY (profile_id, skill_id),
FOREIGN KEY (profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (skill_id) REFERENCES skills(skill_id) ON DELETE CASCADE
);
-- Tabla "project_skills"
CREATE TABLE IF NOT EXISTS project_skills (
project_id BIGINT UNSIGNED NOT NULL,
skill_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (project_id, skill_id),
FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE,
FOREIGN KEY (skill_id) REFERENCES skills(skill_id) ON DELETE CASCADE
);
-- Tabla "filters_professional"
CREATE TABLE IF NOT EXISTS filters_professional (
company_id BIGINT UNSIGNED NOT NULL,
profile_id BIGINT UNSIGNED NOT NULL,
rating INT,
PRIMARY KEY (company_id, profile_id),
FOREIGN KEY (company_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE -- no es un usuario, es un perfil ideal de filtro
);
-- Tabla "company_capstone_projects"
CREATE TABLE IF NOT EXISTS company_capstone_projects (
company_id BIGINT UNSIGNED NOT NULL,
project_id BIGINT UNSIGNED NOT NULL,
kind TEXT,
active BOOLEAN,
PRIMARY KEY (company_id, project_id),
FOREIGN KEY (company_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
);
-- Tabla "favorite_profiles"
CREATE TABLE IF NOT EXISTS favorite_profiles (
company_id BIGINT UNSIGNED NOT NULL,
profile_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (company_id, profile_id),
FOREIGN KEY (company_id) REFERENCES company_profiles(profile_id) ON DELETE CASCADE,
FOREIGN KEY (profile_id) REFERENCES professional_profiles(profile_id) ON DELETE CASCADE
);