Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/LuisAMoralesA/tallerIngles-UAEMEcatepec/llms.txt

Use this file to discover all available pages before exploring further.

The tallerdeingles MySQL database contains 11 tables organized into catalog tables (read-only reference data seeded at setup) and operational tables (created and updated at runtime by the application). All JDBC access is performed through PreparedStatement inside the BaseDatos class — raw SQL strings are never built from user input.

Diagrama de relaciones (resumen)

The diagram below summarizes every foreign-key relationship in the schema. Nullable FKs are marked with (nullable).
Tabla origenCampo FKTabla destinoCampo referenciadoNullable
studentsid_user_studentusersid_userNo
studentsid_teacher_studentteachersid_teacher
studentsid_report_studentreportid_reportNo
studentsid_payment_studentpaymentid_paymentNo
teachersid_user_teacherusersid_userNo
teachersid_group_teachergruposid_group
gruposid_gradegradeid_gradeNo
gruposid_category_groupcategoryid_categoryNo
paymentpayment_statuspayment_statusid_statusNo
admin_schoolid_user_adminusersid_userNo
Nullable FKs arise because a student may not yet be assigned to a teacher/group, and a teacher may not yet be assigned to a group. The desvincularProfesores, desvincularAlumnos, and desvincularGrupo methods in BaseDatos SET these fields to NULL before cascaded deletes.

Tablas

users

Central authentication table. Every person in the system — administrator, teacher, or student — has exactly one row here. Usernames are auto-generated by the registration servlets using a deterministic formula derived from the person’s name and date of birth.
CampoTipoDescripción
id_userINT PK AUTO_INCREMENTIdentificador único del usuario
nom_userVARCHARNombre de usuario (auto-generado por el servlet de registro)
passwordVARCHARHash SHA-256 de la contraseña en formato hexadecimal (64 caracteres)
rangoVARCHARRol del usuario: ADMINISTRADOR, MAESTRO, o ESTUDIANTE
Passwords are hashed using SHA256.contraseñaNueva(String) before insertion and are never stored in plain text. The inicioSesion method rehashes the submitted password and compares digests.

admin_school

Personal data for school administrators. Linked 1-to-1 with users via id_user_admin.
CampoTipoDescripción
id_adminINT PK AUTO_INCREMENTIdentificador único del administrador
id_user_adminINT FKReferencia a users.id_user
apellido_paterno_adminVARCHARApellido paterno
apellido_materno_adminVARCHARApellido materno
nombre_adminVARCHARNombre(s) de pila
fecha_nacimiento_adminDATEFecha de nacimiento
telefono_adminVARCHARNúmero de teléfono
email_adminVARCHARCorreo electrónico

teachers

Personal and assignment data for teachers. Each teacher may be assigned to at most one group (id_group_teacher); if unassigned, this field is NULL.
CampoTipoDescripción
id_teacherINT PK AUTO_INCREMENTIdentificador único del profesor
id_user_teacherINT FKReferencia a users.id_user
apellido_paterno_teacherVARCHARApellido paterno
apellido_materno_teacherVARCHARApellido materno
nombre_teacherVARCHARNombre(s) de pila
telefono_teacherVARCHARNúmero de teléfono
email_teacherVARCHARCorreo electrónico
fecha_nacimiento_teacherDATEFecha de nacimiento
status_teacherVARCHAREstado de actividad: Activo o Inactivo
id_group_teacherINT FK nullableGrupo asignado — referencia a grupos.id_group; NULL si sin grupo
classroom_teacherVARCHARIdentificador del salón de clases asignado

students

The largest operational table. Each student row references its own payment record, report record, and users record created atomically by the addStudent servlet. The id_teacher_student FK is nullable — students are enrolled without a group assignment and linked to a teacher later.
CampoTipoDescripción
id_studentINT PK AUTO_INCREMENTIdentificador único del alumno
id_teacher_studentINT FK nullableProfesor/grupo asignado — referencia a teachers.id_teacher; NULL si sin grupo
id_report_studentINT FKRegistro de calificaciones — referencia a report.id_report
id_payment_studentINT FKRegistro de seguimiento de pagos — referencia a payment.id_payment
id_user_studentINT FKReferencia a users.id_user
apellido_paterno_studentVARCHARApellido paterno
apellido_materno_studentVARCHARApellido materno
nombre_studentVARCHARNombre(s) de pila
telefono1_studentVARCHARTeléfono principal
telefono2_studentVARCHARTeléfono secundario
fecha_nacimiento_studentDATEFecha de nacimiento
email_studentVARCHARCorreo electrónico
sale_soloBOOLEAN (TINYINT 0/1)1 si el alumno tiene autorización de salir solo del plantel, 0 si no
When id_teacher_student is 0 in the Java Students object, insertarEstudiante stores NULL via pstm.setNull(1, java.sql.Types.INTEGER). The same logic applies to updates in actualizarEstudiante.

grupos

Defines the class groups offered each semester. A group is characterized by a grade level, a numeric level within that grade, a category (Children/Teens), and a classroom.
CampoTipoDescripción
id_groupINT PK AUTO_INCREMENTIdentificador único del grupo
id_gradeINT FKNivel académico — referencia a grade.id_grade
level_groupINTNivel numérico dentro del grado (p. ej. 1, 2, 3…)
id_category_groupINT FKCategoría de edad — referencia a category.id_category
classroom_groupVARCHARIdentificador del salón donde se imparte el grupo

grade

Catalog table for academic levels. Seeded with the three levels used by the workshop.
CampoTipoDescripción
id_gradeINT PK AUTO_INCREMENTIdentificador único del nivel
description_gradeVARCHARDescripción del nivel: Basico, Intermedio, o Avanzado

category

Catalog table for student age categories.
CampoTipoDescripción
id_categoryINT PK AUTO_INCREMENTIdentificador único de la categoría
description_categoryVARCHARDescripción de la categoría: Children o Teens

report

Stores the grade record for one student for one semester. Created atomically with the student row in addStudent; first_partial_report and second_partial_report default to 0.0. The avg_report field is computed by the updateGrade servlet as (firstPartial + secondPartial) / 2.
CampoTipoDescripción
id_reportINT PK AUTO_INCREMENTIdentificador único de la lista de calificaciones
first_partial_reportDOUBLECalificación del primer parcial
second_partial_reportDOUBLECalificación del segundo parcial
avg_reportDOUBLEPromedio final calculado por el servlet updateGrade

payment

Tracks payment status for one student for one semester. Flags are stored as TINYINT (0/1) in MySQL and mapped to Java boolean. Created atomically with the student row in addStudent; all flags default to false.
CampoTipoDescripción
id_paymentINT PK AUTO_INCREMENTIdentificador único del registro de pago
register_paymentBOOLEAN1 si la inscripción ha sido pagada
pay_1pay_7BOOLEAN1 si la mensualidad correspondiente (1–7) ha sido pagada
payment_statusINT FKEstado global del alumno — referencia a payment_status.id_status

payment_status

Catalog table for overall payment status labels applied to students.
CampoTipoDescripción
id_statusINT PK AUTO_INCREMENTIdentificador único del estatus
description_statusVARCHARDescripción del estatus (p. ej. Al corriente, Adeudo, Beca)

pay_simbology

Payment calendar — one row per billing event (inscription + up to 7 monthly fees). Rows are shared by all students; the period_pay field distinguishes between semesters. The updatePeriodo servlet flips all non-Cualquiera rows between Periodo A and Periodo B at semester change.
CampoTipoDescripción
id_payINT PK AUTO_INCREMENTIdentificador único de la entrada del calendario
monthVARCHARNombre del mes
description_payVARCHARDescripción del concepto de pago
cost_payDOUBLECosto en pesos del concepto
period_payVARCHARSemestre al que aplica: Periodo A, Periodo B, o Cualquiera
deadline_payDATE nullableFecha límite de pago (NULL si no aplica)

Build docs developers (and LLMs) love