DISEÑO DE CASO DE USO DE
NEGOCIO DE GESTION ESCOLR
Script de la Tabla
CREATE TABLE usuarios (
id INT PRIMARY KEY AUTO_INCREMENT,
nombre_usuario VARCHAR(50) NOT NULL,
contrasena VARCHAR(255) NOT NULL,
rol ENUM('admin', 'secretaria', 'profesor', 'alumno', 'padre', 'rrhh') NOT NULL,
persona_id INT,
estado BOOLEAN DEFAULT TRUE
);
CREATE TABLE admins (
id INT PRIMARY KEY AUTO_INCREMENT,
dni CHAR(8) UNIQUE,
nombres VARCHAR(100),
apellidos VARCHAR(100)
);
CREATE TABLE secretarias (
id INT PRIMARY KEY AUTO_INCREMENT,
dni CHAR(8) UNIQUE,
nombres VARCHAR(100),
apellidos VARCHAR(100)
);
CREATE TABLE rrhh (
id INT PRIMARY KEY AUTO_INCREMENT,
dni CHAR(8) UNIQUE,
nombres VARCHAR(100),
apellidos VARCHAR(100)
);
CREATE TABLE profesores (
id INT PRIMARY KEY AUTO_INCREMENT,
dni CHAR(8) UNIQUE,
nombres VARCHAR(100),
apellidos VARCHAR(100),
especialidad VARCHAR(100)
);
CREATE TABLE alumnos (
id INT PRIMARY KEY AUTO_INCREMENT,
dni CHAR(8) UNIQUE,
nombres VARCHAR(100),
apellidos VARCHAR(100),
direccion TEXT,
fecha_nacimiento DATE,
estado ENUM('activo', 'retirado') DEFAULT 'activo'
);
CREATE TABLE padres (
id INT PRIMARY KEY AUTO_INCREMENT,
dni CHAR(8) UNIQUE,
nombres VARCHAR(100),
apellidos VARCHAR(100),
telefono VARCHAR(15)
);
CREATE TABLE alumno_padre (
id INT PRIMARY KEY AUTO_INCREMENT,
alumno_id INT,
padre_id INT,
FOREIGN KEY (alumno_id) REFERENCES alumnos(id),
FOREIGN KEY (padre_id) REFERENCES padres(id)
);
CREATE TABLE matriculas_generales (
id INT PRIMARY KEY AUTO_INCREMENT,
alumno_id INT NOT NULL,
anio_escolar INT NOT NULL,
fecha_matricula DATE NOT NULL,
estado ENUM('vigente', 'retirado', 'anulado') DEFAULT 'vigente',
ratificado BOOLEAN DEFAULT FALSE,
observaciones TEXT,
FOREIGN KEY (alumno_id) REFERENCES alumnos(id)
);
CREATE TABLE cursos (
id INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(100),
descripcion TEXT,
aula VARCHAR(20),
profesor_id INT,
FOREIGN KEY (profesor_id) REFERENCES profesores(id)
);
CREATE TABLE matricula_cursos (
id INT PRIMARY KEY AUTO_INCREMENT,
matricula_id INT,
curso_id INT,
FOREIGN KEY (matricula_id) REFERENCES matriculas_generales(id),
FOREIGN KEY (curso_id) REFERENCES cursos(id)
);
CREATE TABLE notas (
id INT PRIMARY KEY AUTO_INCREMENT,
alumno_id INT,
curso_id INT,
bimestre INT,
nota DECIMAL(4,2),
FOREIGN KEY (alumno_id) REFERENCES alumnos(id),
FOREIGN KEY (curso_id) REFERENCES cursos(id)
);
CREATE TABLE asistencia (
id INT PRIMARY KEY AUTO_INCREMENT,
alumno_id INT,
curso_id INT,
fecha DATE,
estado ENUM('asistio', 'falta', 'tardanza'),
observaciones TEXT,
FOREIGN KEY (alumno_id) REFERENCES alumnos(id),
FOREIGN KEY (curso_id) REFERENCES cursos(id)
);
CREATE TABLE tareas_asignadas (
id INT PRIMARY KEY AUTO_INCREMENT,
curso_id INT,
profesor_id INT,
titulo VARCHAR(100),
descripcion TEXT,
fecha_asignacion DATE,
fecha_entrega DATE,
archivo_url TEXT,
FOREIGN KEY (curso_id) REFERENCES cursos(id),
FOREIGN KEY (profesor_id) REFERENCES profesores(id)
);
CREATE TABLE tareas_entregadas (
id INT PRIMARY KEY AUTO_INCREMENT,
tarea_id INT,
alumno_id INT,
archivo_url TEXT,
fecha_entrega DATE,
observaciones TEXT,
calificacion DECIMAL(4,2),
FOREIGN KEY (tarea_id) REFERENCES tareas_asignadas(id),
FOREIGN KEY (alumno_id) REFERENCES alumnos(id)
);
CREATE TABLE comunicados (
id INT PRIMARY KEY AUTO_INCREMENT,
titulo VARCHAR(100),
contenido TEXT,
fecha DATE,
dirigido_a ENUM('alumnos', 'padres', 'profesores', 'todos')
);
CREATE TABLE avisos (
id INT PRIMARY KEY AUTO_INCREMENT,
profesor_id INT,
curso_id INT,
fecha DATE,
contenido TEXT,
FOREIGN KEY (profesor_id) REFERENCES profesores(id),
FOREIGN KEY (curso_id) REFERENCES cursos(id)
);
CREATE TABLE material_educativo (
id INT PRIMARY KEY AUTO_INCREMENT,
curso_id INT,
descripcion TEXT,
archivo_url TEXT,
fecha_subida DATE,
FOREIGN KEY (curso_id) REFERENCES cursos(id)
);
CREATE TABLE inmuebles (
id INT PRIMARY KEY AUTO_INCREMENT,
tipo ENUM('aula', 'laboratorio', 'cancha', 'oficina', 'otros') NOT NULL,
nombre VARCHAR(100),
descripcion TEXT,
capacidad INT,
ubicacion VARCHAR(100)
);
CREATE TABLE equipos (
id INT PRIMARY KEY AUTO_INCREMENT,
tipo VARCHAR(50),
descripcion TEXT,
marca VARCHAR(50),
modelo VARCHAR(50),
serial_number VARCHAR(100),
estado ENUM('operativo', 'en reparación', 'inservible') DEFAULT 'operativo',
fecha_registro DATE
);
CREATE TABLE informes_trabajo (
id INT PRIMARY KEY AUTO_INCREMENT,
titulo VARCHAR(100),
contenido TEXT,
fecha DATE,
autor_id INT,
rol_autor ENUM('admin', 'rrhh', 'profesor'),
FOREIGN KEY (autor_id) REFERENCES usuarios(id)