Projet

Général

Profil

PROD V(22) ACTUEL » 5_0_quiz_struct.sql

Tarek AOUADI, 15/08/2025 17:07

 
1
USE salarymarket;
2

    
3
-- Create solution_quiz table
4
CREATE TABLE solution_quiz (
5
    id INT AUTO_INCREMENT UNIQUE,
6
    quizCode VARCHAR(255) NOT NULL PRIMARY KEY,
7
    quiz_image VARCHAR(255) NULL,    
8
    averagetime VARCHAR(3) NOT NULL,  
9
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,    
10
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
11
);
12

    
13
-- Create solution_quiz_country table
14
CREATE TABLE solution_quiz_country (
15
    id INT PRIMARY KEY AUTO_INCREMENT,
16
    quizCode VARCHAR(255) NOT NULL,
17
    countryCode VARCHAR(255) NOT NULL,
18
    FOREIGN KEY (countryCode) REFERENCES solution_setting_country(code) ON DELETE CASCADE,
19
    FOREIGN KEY (quizCode) REFERENCES solution_quiz(quizCode) ON DELETE CASCADE ON UPDATE CASCADE
20
);
21

    
22
-- Create solution_quiz_translate table
23
CREATE TABLE solution_quiz_translate (
24
    id INT PRIMARY KEY AUTO_INCREMENT,
25
    quizCode VARCHAR(255) NOT NULL,
26
    title VARCHAR(255) NOT NULL,
27
    short_description TEXT NULL,  
28
    description TEXT NULL,
29
    languageId INT NOT NULL,
30
    FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
31
    FOREIGN KEY (quizCode) REFERENCES solution_quiz(quizCode) ON DELETE CASCADE ON UPDATE CASCADE
32
);
33

    
34
-- Create solution_quiz_section table
35
CREATE TABLE solution_quiz_section (
36
    id INT AUTO_INCREMENT UNIQUE,
37
    sectionCode VARCHAR(255) NOT NULL PRIMARY KEY,
38
    quizCode VARCHAR(255) NOT NULL,
39
    section_order INT NOT NULL,
40
    FOREIGN KEY (quizCode) REFERENCES solution_quiz(quizCode) ON DELETE CASCADE ON UPDATE CASCADE
41
);
42

    
43
-- Create solution_quiz_section_translate table
44
CREATE TABLE solution_quiz_section_translate (
45
    id INT PRIMARY KEY AUTO_INCREMENT,
46
    sectionCode VARCHAR(255) NOT NULL,
47
    title VARCHAR(255) NOT NULL,
48
    languageId INT NOT NULL,
49
    FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
50
    FOREIGN KEY (sectionCode) REFERENCES solution_quiz_section(sectionCode) ON DELETE CASCADE ON UPDATE CASCADE
51
);
52

    
53
-- Create solution_quiz_questions table
54
CREATE TABLE solution_quiz_section_questions (
55
    id INT AUTO_INCREMENT UNIQUE,
56
    questionCode VARCHAR(255) NOT NULL  PRIMARY KEY,
57
    sectionCode VARCHAR(255) NOT NULL,
58
    quizCode VARCHAR(255) NOT NULL,
59
    idparent VARCHAR(255) NULL,
60
    type VARCHAR(2) NOT NULL,
61
    question_order INT NOT NULL,
62
    echartType VARCHAR(255) NULL,
63
    FOREIGN KEY (quizCode) REFERENCES solution_quiz(quizCode) ON DELETE CASCADE ON UPDATE CASCADE
64
,
65
    FOREIGN KEY (sectionCode) REFERENCES solution_quiz_section(sectionCode) ON DELETE CASCADE ON UPDATE CASCADE
66
);
67

    
68
-- Create solution_quiz_questions_translate table
69
CREATE TABLE solution_quiz_section_questions_translate (
70
    id INT PRIMARY KEY AUTO_INCREMENT,
71
    questionCode VARCHAR(255) NOT NULL,
72
    title VARCHAR(255) NOT NULL,
73
    languageId INT NOT NULL,
74
    FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
75
    FOREIGN KEY (questionCode) REFERENCES solution_quiz_section_questions(questionCode) ON DELETE CASCADE ON UPDATE CASCADE
76
);
77

    
78
-- Table for storing unique quiz items
79
CREATE TABLE solution_reponses_items (
80
    itemCode VARCHAR(255)  NOT NULL  PRIMARY KEY,
81
    itemName  VARCHAR(255)
82
);
83

    
84
-- Table for linking items to multiple questions
85
CREATE TABLE solution_quiz_section_questions_items (
86
    id INT AUTO_INCREMENT PRIMARY KEY,  
87
    itemCode VARCHAR(255) NOT NULL,  
88
    questionCode VARCHAR(255) NOT NULL,  
89
    itemParentId  VARCHAR(255) NULL,
90
    isOther BOOLEAN DEFAULT 0,
91
    FOREIGN KEY (itemCode) REFERENCES solution_reponses_items(itemCode) ON DELETE CASCADE ON UPDATE CASCADE,
92
    FOREIGN KEY (questionCode) REFERENCES solution_quiz_section_questions(questionCode) ON DELETE CASCADE ON UPDATE CASCADE
93
);
94

    
95
-- Create solution_quiz_question_items_translate table
96
CREATE TABLE solution_quiz_question_items_translate (
97
    id INT PRIMARY KEY AUTO_INCREMENT,
98
    itemCode VARCHAR(255) NOT NULL,
99
    itemValue VARCHAR(255) NOT NULL,
100
    languageId INT NOT NULL,
101
    FOREIGN KEY (languageId) REFERENCES languages(id) ON DELETE CASCADE ON UPDATE CASCADE,
102
    FOREIGN KEY (itemCode) REFERENCES solution_reponses_items(itemCode) ON DELETE CASCADE ON UPDATE CASCADE
103
);
104

    
105
-- Create company_quiz table
106
CREATE TABLE company_quiz (
107
    id INT AUTO_INCREMENT PRIMARY KEY,
108
    companyId INT NOT NULL,
109
    quizCode VARCHAR(255) NOT NULL,
110
    quiz_status ENUM('NOT_STARTED','IN_PROGRESS','COMPLETED') DEFAULT 'NOT_STARTED',
111
    progress_value FLOAT DEFAULT 0,
112
    FOREIGN KEY (quizCode) REFERENCES solution_quiz(quizCode) ON DELETE CASCADE ON UPDATE CASCADE,
113
    FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE
114
);
115

    
116
-- Create company_quiz_response table
117
CREATE TABLE company_quiz_response (
118
    id INT AUTO_INCREMENT PRIMARY KEY,
119
    quizCode VARCHAR(255) NOT NULL,
120
    questionCode VARCHAR(255) NOT NULL, 
121
    sectionCode VARCHAR(255) NOT NULL,
122
    itemCode VARCHAR(255) NOT NULL,
123
    response VARCHAR(255),
124
    type VARCHAR(50),
125
    companyId INT NOT NULL,
126
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
127
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
128
    FOREIGN KEY (quizCode) REFERENCES solution_quiz(quizCode) ON DELETE CASCADE ON UPDATE CASCADE,
129
    FOREIGN KEY (sectionCode) REFERENCES solution_quiz_section(sectionCode) ON DELETE CASCADE ON UPDATE CASCADE,
130
    FOREIGN KEY (itemCode) REFERENCES solution_reponses_items(itemCode) ON DELETE CASCADE ON UPDATE CASCADE,
131
    FOREIGN KEY (questionCode) REFERENCES solution_quiz_section_questions(questionCode) ON DELETE CASCADE ON UPDATE CASCADE,
132
    FOREIGN KEY (companyId) REFERENCES company(id) ON DELETE CASCADE ON UPDATE CASCADE
133
);
134

    
(16-16/25)