-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtechQuiz.sql
More file actions
105 lines (97 loc) · 3.17 KB
/
techQuiz.sql
File metadata and controls
105 lines (97 loc) · 3.17 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
-- Create User Table
CREATE TABLE User (
userId INT AUTO_INCREMENT PRIMARY KEY,
firstName VARCHAR(255) NOT NULL,
lastName VARCHAR(255) NOT NULL,
userName VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
role VARCHAR(50) NOT NULL,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Create Company Table
CREATE TABLE Company (
companyId INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
location VARCHAR(255),
description TEXT
);
-- Create Profile Table
CREATE TABLE Profile (
profileId INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL
);
-- Create Job Table
CREATE TABLE Job (
jobId INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
requirements TEXT,
companyId INT,
FOREIGN KEY (companyId) REFERENCES Company(companyId) ON DELETE SET NULL
);
-- Create Quiz Table
CREATE TABLE Quiz (
id INT AUTO_INCREMENT PRIMARY KEY,
profileId INT NOT NULL,
jobId INT NOT NULL,
questionIds JSON NOT NULL,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
userId INT NOT NULL,
timer INT NOT NULL,
numberQuestions INT NOT NULL,
FOREIGN KEY (profileId) REFERENCES Profile(profileId) ON DELETE SET NULL,
FOREIGN KEY (jobId) REFERENCES Job(jobId) ON DELETE SET NULL,
FOREIGN KEY (userId) REFERENCES User(userId) ON DELETE SET NULL
);
-- Create Questions Table
CREATE TABLE Questions (
id INT AUTO_INCREMENT PRIMARY KEY,
profileId INT,
text TEXT NOT NULL,
type VARCHAR(50),
options JSON,
answer JSON,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (profileId) REFERENCES Profile(profileId) ON DELETE SET NULL
);
-- Create Resume Table
CREATE TABLE Resume (
resumeId INT AUTO_INCREMENT PRIMARY KEY,
userId INT,
jobId INT,
resumeUrl VARCHAR(255),
uploadedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (userId) REFERENCES User(userId) ON DELETE CASCADE,
FOREIGN KEY (jobId) REFERENCES Job(jobId) ON DELETE SET NULL
);
-- Create Application Table
CREATE TABLE Application (
applicationId INT AUTO_INCREMENT PRIMARY KEY,
userId INT,
jobId INT,
resumeId INT,
status VARCHAR(100) DEFAULT 'Pending',
submittedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (userId) REFERENCES User(userId) ON DELETE CASCADE,
FOREIGN KEY (jobId) REFERENCES Job(jobId) ON DELETE SET NULL,
FOREIGN KEY (resumeId) REFERENCES Resume(resumeId) ON DELETE SET NULL
);
-- Create QuizHistory Table
CREATE TABLE QuizHistory (
historyId INT AUTO_INCREMENT PRIMARY KEY,
userId INT,
quizId INT,
score DECIMAL(5, 2),
status VARCHAR(50),
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
correctAnswers INT,
totalQuestions INT,
scorePercentage DECIMAL(5, 2),
notAnsweredOrFalse INT,
results JSON,
FOREIGN KEY (userId) REFERENCES User(userId) ON DELETE CASCADE,
FOREIGN KEY (quizId) REFERENCES Quiz(id) ON DELETE CASCADE
);