· 5 months ago · May 10, 2025, 11:10 AM
1CREATE DATABASE Proyecto;
2use Proyecto;
3
4CREATE TABLE IF NOT EXISTS usuarios (
5id INT PRIMARY KEY AUTO_INCREMENT,
6nombre VARCHAR(50),
7apellidos VARCHAR(100),
8email VARCHAR (100) UNIQUE,
9contraseña VARCHAR(255),
10 fecha_nacimiento DATE,
11genero ENUM('masculino', 'femenino', 'no binario', 'prefiero no decir'),
12ciudad VARCHAR(100),
13 pais VARCHAR(50),
14 telefono VARCHAR(20),
15 fecha_registro DATETIME,
16ultima_conexion DATETIME,
17 foto_perfil VARCHAR(255),
18 preferencias_notificacion JSON,
19 estado_cuenta ENUM('activo', 'inactivo', 'suspendido'),
20tipo_cuenta ENUM('gratuita', 'premium')
21);
22
23CREATE TABLE IF NOT EXISTS profesionales(
24
25 id INT PRIMARY KEY AUTO_INCREMENT,
26 nombre VARCHAR(50),
27 apellidos VARCHAR(100),
28 email VARCHAR(100) UNIQUE,
29 contraseña VARCHAR(255),
30 especialidad VARCHAR(100),
31 num_colegiado VARCHAR(50) UNIQUE,
32 descripcion TEXT,
33 experiencia_años INT,
34 formacion TEXT,
35 disponibilidad JSON,
36precio_consulta DECIMAL(10,2),
37tipo_consulta SET('online', 'presencial', 'ambas'),
38 metodos_pago SET('tarjeta', 'transferencia', 'paypal'),
39 valoracion_media DECIMAL(3,2),
40 idiomas SET('español', 'inglés', 'francés', 'alemán', 'otros'),
41 verificado BOOLEAN,
42 fecha_registro DATETIME,
43 foto_perfil VARCHAR(255),
44 ubicacion_consulta VARCHAR(255),
45estado_cuenta ENUM('activo', 'inactivo', 'suspendido')
46
47)
48;
49
50CREATE TABLE IF NOT EXISTS test_evaluacion (
51id INT PRIMARY KEY AUTO_INCREMENT,
52 nombre VARCHAR(100),
53 descripcion TEXT,
54 categoria ENUM('ansiedad', 'depresion', 'estres', 'autoestima', 'otro'),
55 tiempo_estimado INT,
56 nivel_dificultad ENUM('básico', 'intermedio', 'avanzado'),
57 instrucciones TEXT,
58 fecha_creacion DATETIME,
59 activo BOOLEAN
60
61
62);
63
64CREATE TABLE IF NOT EXISTS preguntas_test (
65id INT PRIMARY KEY AUTO_INCREMENT,
66test_id INT,
67 FOREIGN KEY (test_id) REFERENCES test_evaluacion(id),
68 texto_pregunta TEXT,
69 tipo_respuesta ENUM('escala_likert', 'si_no', 'opcion_multiple', 'texto_libre'),
70 opciones_respuesta JSON,
71 orden INT,
72obligatoria BOOLEAN
73
74
75);
76
77CREATE TABLE IF NOT EXISTS respuesta_usuario (
78id INT PRIMARY KEY AUTO_INCREMENT,
79usuario_id INT,
80 FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
81 test_id INT,
82 FOREIGN KEY (test_id) REFERENCES test_evaluacion(id),
83 pregunta_id INT,
84 FOREIGN KEY (pregunta_id) REFERENCES preguntas_test(id),
85 valor_respuesta TEXT,
86fecha_respuesta DATETIME
87
88
89
90);
91
92CREATE TABLE IF NOT EXISTS resiltados_test (
93id INT PRIMARY KEY AUTO_INCREMENT,
94usuario_id INT,
95 FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
96 test_id INT,
97 FOREIGN KEY (test_id) REFERENCES test_evaluacion(id),
98
99 puntuacion_total INT,
100 interpretacion TEXT,
101recomendaciones TEXT,
102 fecha_realizacion DATETIME
103
104
105
106);
107
108CREATE TABLE IF NOT EXISTS chatbot_mensajes (
109id INT PRIMARY KEY AUTO_INCREMENT,
110usuario_id INT,
111 FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
112
113contenido_mensaje TEXT,
114 es_bot BOOLEAN,
115fecha_mensaje DATETIME,
116 analisis_sentimiento VARCHAR(50),
117tema_detectado VARCHAR(100),
118 contexto_conversacion VARCHAR(255),
119sessionID VARCHAR(255)
120
121
122);
123
124CREATE TABLE IF NOT EXISTS chatbot_frases (
125id INT PRIMARY KEY AUTO_INCREMENT,
126categoria ENUM('saludo', 'despedida', 'apoyo', 'emergencia', 'redireccion'),
127 texto TEXT,
128 palabras_clave TEXT,
129 nivel_emergencia INT,
130 requiere_seguimiento BOOLEAN
131
132
133);
134
135CREATE TABLE IF NOT EXISTS recursos (
136id INT PRIMARY KEY AUTO_INCREMENT,
137titulo VARCHAR(255),
138descripcion TEXT,
139 tipo ENUM('articulo', 'video', 'audio', 'ejercicio', 'infografia'),
140categoria ENUM('ansiedad', 'depresion', 'estres', 'autoestima', 'mindfulness'),
141 url VARCHAR(255),
142 autor VARCHAR(100),
143 fecha_publicacion DATE,
144 duracion INT,
145 valoracion_media DECIMAL(3,2),
146veces_consultado INT,
147 activo BOOLEAN
148
149);
150
151CREATE TABLE IF NOT EXISTS ejercicios_mindfulness (
152id INT PRIMARY KEY AUTO_INCREMENT,
153nombre VARCHAR(255),
154 descripcion TEXT,
155 instrucciones TEXT,
156 duracion_recomendada INT,
157 nivel ENUM('principiante', 'intermedio', 'avanzado'),
158 categoria ENUM('respiracion', 'meditacion', 'atencion_plena', 'yoga'),
159 audio_url VARCHAR(255),
160 imagen_url VARCHAR(255),
161 beneficios TEXT,
162veces_usado INT
163);
164
165CREATE TABLE IF NOT EXISTS foros (
166id INT PRIMARY KEY AUTO_INCREMENT,
167nombre VARCHAR(100),
168 descripcion TEXT,
169 categoria ENUM('ansiedad', 'depresion', 'estres', 'autoestima', 'general'),
170
171reglas TEXT,
172 fecha_creacion DATETIME,
173activo BOOLEAN,
174
175moderador_id INT,
176 FOREIGN KEY (moderador_id) REFERENCES usuarios(id)
177
178);
179
180
181CREATE TABLE IF NOT EXISTS temas_foro (
182id INT PRIMARY KEY AUTO_INCREMENT,
183titulo VARCHAR(255),
184 contenido TEXT,
185 fecha_publicacion DATETIME,
186 ultima_actividad DATETIME,
187 vistas INT,
188 estado ENUM('abierto', 'cerrado', 'destacado'),
189foro_id INT,
190 FOREIGN KEY (foro_id) REFERENCES foros(id),
191 usuario_id INT,
192 FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
193
194);
195
196CREATE TABLE IF NOT EXISTS comentarios_foro (
197id INT PRIMARY KEY AUTO_INCREMENT,
198contenido TEXT,
199 fecha_publicacion DATETIME,
200editado BOOLEAN,
201 respuesta_a INT,
202tema_id INT,
203 FOREIGN KEY (tema_id) REFERENCES temas_foro(id),
204 usuario_id INT,
205 FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
206 FOREIGN KEY (respuesta_a) REFERENCES comentarios_foro(id)
207);
208
209CREATE TABLE IF NOT EXISTS citas (
210id INT PRIMARY KEY AUTO_INCREMENT,
211fecha_hora DATETIME,
212 duracion INT,
213 tipo_consulta ENUM('online', 'presencial'),
214 plataforma VARCHAR(100),
215 estado ENUM('pendiente', 'confirmada', 'cancelada', 'completada'),
216notas_previas TEXT,
217 precio DECIMAL(10,2),
218metodo_pago VARCHAR(50),
219 recordatorio_enviado BOOLEAN,
220 profesional INT,
221 FOREIGN KEY (profesional_id) REFERENCES profesionales(id),
222 usuario_id INT,
223 FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
224
225);
226
227CREATE TABLE IF NOT EXISTS recomendaciones_ia (
228id INT PRIMARY KEY AUTO_INCREMENT,
229tipo ENUM('profesional', 'recurso', 'ejercicio', 'test'),
230
231 fecha_recomendacion DATETIME,
232 motivo TEXT,
233 prioridad INT,
234basado_en TEXT,
235 mostrado BOOLEAN,
236 seguido BOOLEAN,
237 elemento INT,
238 FOREIGN KEY (elemento_id) REFERENCES profesionales(id),
239 usuario_id INT,
240 FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
241
242);
243
244
245CREATE TABLE IF NOT EXISTS registros_emocionales (
246id INT PRIMARY KEY AUTO_INCREMENT,
247fecha_registro DATETIME,
248 emocion_principal VARCHAR(50),
249 intensidad INT,
250descripcion TEXT,
251 factores_desencadenantes TEXT,
252estrategias_aplicadas TEXT,
253 resultado_estrategias TEXT,
254 usuario_id INT,
255 FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
256
257);
258
259CREATE TABLE IF NOT EXISTS configuracion_chatbot (
260id INT PRIMARY KEY AUTO_INCREMENT,
261nombre_modelo VARCHAR(100),
262version_modelo VARCHAR(50),
263temperatura DECIMAL(3,2),
264max_tokens INT,
265frecuencia_penalty DECIMAL(3,2),
266presence_penalty DECIMAL(3,2),
267protocolo_emergencia TEXT,
268palabras_prohibidas TEXT,
269ultima_actualizacion DATETIME
270);
271
272
273
274
275CREATE TABLE IF NOT EXISTS log_interacciones_ia (
276id INT PRIMARY KEY AUTO_INCREMENT,
277tipo_interaccion ENUM('chatbot', 'recomendacion', 'test', 'recurso'),
278descripcion TEXT,
279duracion_sesion INT,
280satisfaccion_usuario INT,
281palabras_clave TEXT,
282detectada_emergencia BOOLEAN,
283accion_tomada TEXT,
284fecha_hora DATETIME,
285error_detectado TEXT,
286 usuario_id INT,
287 FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
288
289);
290
291
292
293