Modelo lógico de datos
erDiagram
USUARIO {
int id_usuario PK
string nombre
string correo
string contrasena
string estado
}
ROL {
int id_rol PK
string nombre
string descripcion
}
USUARIO_ROL {
int id_usuario FK
int id_rol FK
}
PROGRAMA_POSGRADO {
int id_programa PK
string titulo
string tipo
string modalidad_estudio
int horas_totales
int creditos
string estado
}
EDICION_PROGRAMA {
int id_edicion PK
int id_programa FK
int numero_edicion
date fecha_inicio
date fecha_fin
int capacidad
string estado
}
CONVOCATORIA {
int id_convocatoria PK
int id_edicion FK
date fecha_publicacion
text requisitos
string estado
}
SOLICITUD_MATRICULA {
int id_solicitud PK
int id_convocatoria FK
int id_usuario FK
date fecha_solicitud
string estado
text observaciones
}
DOCUMENTO {
int id_documento PK
int id_solicitud FK
string tipo
string ruta_archivo
string estado_validacion
}
ESTUDIANTE {
int id_estudiante PK
int id_usuario FK
string codigo
string estado_academico
}
MATRICULA {
int id_matricula PK
int id_estudiante FK
int id_edicion FK
date fecha_matricula
string estado
}
EXPEDIENTE {
int id_expediente PK
int id_estudiante FK
date fecha_apertura
string estado
}
CALIFICACION {
int id_calificacion PK
int id_expediente FK
string valor
date fecha
}
ASISTENCIA {
int id_asistencia PK
int id_expediente FK
date fecha
boolean presente
}
USUARIO ||--o{ USUARIO_ROL : posee
ROL ||--o{ USUARIO_ROL : asignado
PROGRAMA_POSGRADO ||--o{ EDICION_PROGRAMA : tiene
EDICION_PROGRAMA ||--o| CONVOCATORIA : publica
CONVOCATORIA ||--o{ SOLICITUD_MATRICULA : recibe
USUARIO ||--o{ SOLICITUD_MATRICULA : realiza
SOLICITUD_MATRICULA ||--o{ DOCUMENTO : contiene
USUARIO ||--o| ESTUDIANTE : se_convierte_en
ESTUDIANTE ||--o{ MATRICULA : posee
EDICION_PROGRAMA ||--o{ MATRICULA : incluye
ESTUDIANTE ||--o| EXPEDIENTE : tiene
EXPEDIENTE ||--o{ CALIFICACION : registra
EXPEDIENTE ||--o{ ASISTENCIA : registra