| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- CREATE TABLE roles (
- id_rol SERIAL PRIMARY KEY,
- nombre VARCHAR(50) UNIQUE NOT NULL
- );
- CREATE TABLE usuarios (
- id_usuario SERIAL PRIMARY KEY,
- nombre VARCHAR(100) NOT NULL,
- apellidos VARCHAR(150),
- email VARCHAR(150) UNIQUE NOT NULL,
- fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- activo BOOLEAN DEFAULT TRUE,
- id_rol INT NOT NULL,
- CONSTRAINT fk_usuario_rol
- FOREIGN KEY(id_rol)
- REFERENCES roles(id_rol)
- );
- CREATE TABLE credenciales (
- id_credencial SERIAL PRIMARY KEY,
- id_usuario INT UNIQUE NOT NULL,
- password_hash TEXT NOT NULL,
- ultimo_login TIMESTAMP,
- CONSTRAINT fk_credencial_usuario
- FOREIGN KEY(id_usuario)
- REFERENCES usuarios(id_usuario)
- ON DELETE CASCADE
- );
- CREATE TABLE profesores (
- id_profesor SERIAL PRIMARY KEY,
- id_usuario INT UNIQUE NOT NULL,
- especialidad VARCHAR(100),
- CONSTRAINT fk_profesor_usuario
- FOREIGN KEY(id_usuario)
- REFERENCES usuarios(id_usuario)
- ON DELETE CASCADE
- );
- CREATE TABLE alumnos (
- id_alumno SERIAL PRIMARY KEY,
- id_usuario INT UNIQUE NOT NULL,
- nivel VARCHAR(50),
- CONSTRAINT fk_alumno_usuario
- FOREIGN KEY(id_usuario)
- REFERENCES usuarios(id_usuario)
- ON DELETE CASCADE
- );
- CREATE TABLE cursos (
- id_curso SERIAL PRIMARY KEY,
- nombre VARCHAR(150) NOT NULL,
- descripcion TEXT,
- fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- id_profesor INT NOT NULL,
- CONSTRAINT fk_curso_profesor
- FOREIGN KEY(id_profesor)
- REFERENCES profesores(id_profesor)
- );
- CREATE TABLE matriculas (
- id_matricula SERIAL PRIMARY KEY,
- id_alumno INT NOT NULL,
- id_curso INT NOT NULL,
- fecha_matricula TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- CONSTRAINT fk_matricula_alumno
- FOREIGN KEY(id_alumno)
- REFERENCES alumnos(id_alumno)
- ON DELETE CASCADE,
- CONSTRAINT fk_matricula_curso
- FOREIGN KEY(id_curso)
- REFERENCES cursos(id_curso)
- ON DELETE CASCADE,
- CONSTRAINT unique_matricula
- UNIQUE(id_alumno, id_curso)
- );
- CREATE TABLE actividades (
- id_actividad SERIAL PRIMARY KEY,
- titulo VARCHAR(200) NOT NULL,
- descripcion TEXT,
- fecha_publicacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- fecha_entrega TIMESTAMP,
- puntuacion_maxima NUMERIC(5,2),
- id_curso INT NOT NULL,
- CONSTRAINT fk_actividad_curso
- FOREIGN KEY(id_curso)
- REFERENCES cursos(id_curso)
- ON DELETE CASCADE
- );
- CREATE TABLE entregas (
- id_entrega SERIAL PRIMARY KEY,
- id_actividad INT NOT NULL,
- id_alumno INT NOT NULL,
- fecha_entrega TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- contenido TEXT,
- estado VARCHAR(50) DEFAULT 'pendiente',
- CONSTRAINT fk_entrega_actividad
- FOREIGN KEY(id_actividad)
- REFERENCES actividades(id_actividad)
- ON DELETE CASCADE,
- CONSTRAINT fk_entrega_alumno
- FOREIGN KEY(id_alumno)
- REFERENCES alumnos(id_alumno)
- ON DELETE CASCADE
- );
- CREATE TABLE calificaciones (
- id_calificacion SERIAL PRIMARY KEY,
- id_entrega INT UNIQUE NOT NULL,
- nota NUMERIC(5,2),
- observaciones TEXT,
- fecha_calificacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- CONSTRAINT fk_calificacion_entrega
- FOREIGN KEY(id_entrega)
- REFERENCES entregas(id_entrega)
- ON DELETE CASCADE
- );
- CREATE TABLE progreso (
- id_progreso SERIAL PRIMARY KEY,
- id_alumno INT NOT NULL,
- id_curso INT NOT NULL,
- porcentaje NUMERIC(5,2) DEFAULT 0,
- CONSTRAINT fk_progreso_alumno
- FOREIGN KEY(id_alumno)
- REFERENCES alumnos(id_alumno)
- ON DELETE CASCADE,
- CONSTRAINT fk_progreso_curso
- FOREIGN KEY(id_curso)
- REFERENCES cursos(id_curso)
- ON DELETE CASCADE,
- CONSTRAINT unique_progreso
- UNIQUE(id_alumno, id_curso)
- );
- CREATE TABLE horarios (
- id_horario SERIAL PRIMARY KEY,
- id_curso INT NOT NULL,
- dia_semana INT NOT NULL CHECK (dia_semana BETWEEN 1 AND 5),
- hora_inicio TIME NOT NULL,
- hora_fin TIME NOT NULL,
- aula VARCHAR(50),
- CONSTRAINT fk_horario_curso
- FOREIGN KEY(id_curso)
- REFERENCES cursos(id_curso)
- ON DELETE CASCADE
- );
- CREATE TABLE proyectos (
- id_proyecto SERIAL PRIMARY KEY,
- id_curso INT NOT NULL,
- titulo VARCHAR(200) NOT NULL,
- descripcion TEXT,
- fecha_entrega TIMESTAMP,
- estado VARCHAR(50) DEFAULT 'en curso',
- porcentaje_completado NUMERIC(5,2) DEFAULT 0,
- CONSTRAINT fk_proyecto_curso
- FOREIGN KEY(id_curso)
- REFERENCES cursos(id_curso)
- ON DELETE CASCADE
- );
- CREATE TABLE proyectos_estudiantes (
- id_proyecto INT NOT NULL,
- id_alumno INT NOT NULL,
- PRIMARY KEY (id_proyecto, id_alumno),
- CONSTRAINT fk_pe_proyecto
- FOREIGN KEY(id_proyecto)
- REFERENCES proyectos(id_proyecto)
- ON DELETE CASCADE,
- CONSTRAINT fk_pe_alumno
- FOREIGN KEY(id_alumno)
- REFERENCES alumnos(id_alumno)
- ON DELETE CASCADE
- );
- CREATE TABLE examenes (
- id_examen SERIAL PRIMARY KEY,
- id_curso INT NOT NULL,
- titulo VARCHAR(200) NOT NULL,
- temario TEXT,
- fecha TIMESTAMP NOT NULL,
- duracion_minutos INT NOT NULL,
- modalidad VARCHAR(50),
- CONSTRAINT fk_examen_curso
- FOREIGN KEY(id_curso)
- REFERENCES cursos(id_curso)
- ON DELETE CASCADE
- );
|