-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.sql
More file actions
199 lines (178 loc) · 7.85 KB
/
database.sql
File metadata and controls
199 lines (178 loc) · 7.85 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
-- Base de datos para UTP Class AI
CREATE DATABASE IF NOT EXISTS utp_class_db;
USE utp_class_db;
-- Tabla de usuarios
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
full_name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
role ENUM('student', 'teacher', 'admin') DEFAULT 'student',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Tabla de cursos
CREATE TABLE IF NOT EXISTS courses (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(200) NOT NULL,
code VARCHAR(50) UNIQUE NOT NULL,
description TEXT,
teacher_id INT,
is_live BOOLEAN DEFAULT FALSE,
total_weeks INT DEFAULT 18,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (teacher_id) REFERENCES users(id) ON DELETE SET NULL
);
-- Tabla de inscripciones
CREATE TABLE IF NOT EXISTS enrollments (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
course_id INT NOT NULL,
progress INT DEFAULT 0,
enrolled_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE,
UNIQUE KEY unique_enrollment (user_id, course_id)
);
-- Tabla de semanas del curso
CREATE TABLE IF NOT EXISTS course_weeks (
id INT AUTO_INCREMENT PRIMARY KEY,
course_id INT NOT NULL,
week_number INT NOT NULL,
title VARCHAR(200) NOT NULL,
description TEXT,
start_date DATE,
end_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE,
UNIQUE KEY unique_week (course_id, week_number)
);
-- Tabla de materiales
CREATE TABLE IF NOT EXISTS materials (
id INT AUTO_INCREMENT PRIMARY KEY,
week_id INT NOT NULL,
title VARCHAR(200) NOT NULL,
description TEXT,
type ENUM('video', 'pdf', 'ppt', 'word', 'excel', 'link', 'other') NOT NULL,
file_path VARCHAR(500),
file_url VARCHAR(500),
duration_minutes INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (week_id) REFERENCES course_weeks(id) ON DELETE CASCADE
);
-- Tabla de foros
CREATE TABLE IF NOT EXISTS forums (
id INT AUTO_INCREMENT PRIMARY KEY,
week_id INT NOT NULL,
title VARCHAR(200) NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (week_id) REFERENCES course_weeks(id) ON DELETE CASCADE
);
-- Tabla de posts en foros
CREATE TABLE IF NOT EXISTS forum_posts (
id INT AUTO_INCREMENT PRIMARY KEY,
forum_id INT NOT NULL,
user_id INT NOT NULL,
content TEXT NOT NULL,
parent_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (parent_id) REFERENCES forum_posts(id) ON DELETE CASCADE
);
-- Tabla de tareas
CREATE TABLE IF NOT EXISTS assignments (
id INT AUTO_INCREMENT PRIMARY KEY,
week_id INT NOT NULL,
title VARCHAR(200) NOT NULL,
description TEXT,
due_date DATETIME,
max_score DECIMAL(5,2) DEFAULT 20.00,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (week_id) REFERENCES course_weeks(id) ON DELETE CASCADE
);
-- Tabla de entregas de tareas
CREATE TABLE IF NOT EXISTS submissions (
id INT AUTO_INCREMENT PRIMARY KEY,
assignment_id INT NOT NULL,
user_id INT NOT NULL,
content TEXT,
file_path VARCHAR(500),
score DECIMAL(5,2),
feedback TEXT,
submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
graded_at TIMESTAMP NULL,
FOREIGN KEY (assignment_id) REFERENCES assignments(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
UNIQUE KEY unique_submission (assignment_id, user_id)
);
-- Tabla de publicaciones generales
CREATE TABLE IF NOT EXISTS posts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
category VARCHAR(100),
title VARCHAR(200) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Tabla de conversaciones con IA
CREATE TABLE IF NOT EXISTS ai_conversations (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
user_message TEXT NOT NULL,
ai_response TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Tabla de resúmenes generados por IA
CREATE TABLE IF NOT EXISTS ai_summaries (
id INT AUTO_INCREMENT PRIMARY KEY,
material_id INT NOT NULL,
summary TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (material_id) REFERENCES materials(id) ON DELETE CASCADE
);
-- Tabla de recomendaciones de IA
CREATE TABLE IF NOT EXISTS ai_recommendations (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
course_id INT NOT NULL,
recommendation_type VARCHAR(50),
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE
);
-- Insertar datos de ejemplo
INSERT INTO users (username, password, full_name, email, role) VALUES
('CH71054448', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Estudiante Demo', 'estudiante@demo.com', 'student'),
('PROF001', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Profesor Demo', 'profesor@demo.com', 'teacher');
INSERT INTO courses (name, code, description, teacher_id, is_live, total_weeks) VALUES
('Calidad de Software - Sección 33330', 'CS-33330', 'Curso de calidad de software enfocado en metodologías y herramientas modernas', 2, TRUE, 18),
('Desarrollo Web Avanzado', 'DWA-001', 'Curso avanzado de desarrollo web con tecnologías modernas', 2, FALSE, 16),
('Inteligencia Artificial', 'IA-001', 'Introducción a la inteligencia artificial y machine learning', 2, TRUE, 18);
INSERT INTO enrollments (user_id, course_id, progress) VALUES
(1, 1, 35),
(1, 2, 60),
(1, 3, 15);
INSERT INTO course_weeks (course_id, week_number, title, description) VALUES
(1, 1, 'Semana 01', 'Introducción a la calidad de software'),
(1, 2, 'Semana 02', 'Metodologías de calidad'),
(1, 3, 'Semana 03', 'Pruebas de software');
INSERT INTO materials (week_id, title, description, type, file_url) VALUES
(1, 'Introducción al curso', 'Video de bienvenida y presentación del curso', 'video', 'https://example.com/video1.mp4'),
(1, 'Syllabus del curso', 'Documento con el plan de estudios completo', 'pdf', 'https://example.com/syllabus.pdf'),
(1, 'Presentación Semana 1', 'Slides de la primera clase', 'ppt', 'https://example.com/week1.pptx');
INSERT INTO forums (week_id, title, description) VALUES
(1, 'Foro de dudas - Semana 1', 'Espacio para consultas sobre los temas de la primera semana'),
(2, 'Foro de dudas - Semana 2', 'Espacio para consultas sobre los temas de la segunda semana');
INSERT INTO posts (user_id, category, title, content) VALUES
(2, 'Empleabilidad', 'Convocatoria FORTEL Lima', '¡Atención estudiantes y egresados! FORTEL busca a sus colaboradores part time y full time. Postula hasta el 8 de octubre.'),
(2, 'Empleabilidad', 'Taller de Empleabilidad', 'Desde el área de Empleabilidad, queremos invitarte a ser parte de nuestro taller: "Tu energía es tu ventaja: Motívate para alcanzar tus metas profesionales"'),
(2, 'Anuncios', 'Bienvenida al ciclo', '¡Bienvenidos al nuevo ciclo académico! Les deseamos mucho éxito en sus estudios.');