13

Estoy creando el sistema para un sistema de gestión escolar y propongo el esquema de la base de datos adjunta.Normalización de la base de datos para el Sistema de gestión escolar

Database diagram http://oi40.tinypic.com/15x21ig.jpg

A continuación se presenta cómo funciona el sistema:

  1. Una escuela tiene muchos estudiantes y profesores. También ha impartido muchos cursos (asignaturas). Un nivel de grado puede tener muchos cursos asignados. Estos cursos a su vez serán asignados a los estudiantes en esa calificación en particular.
  2. Los niveles de los estudiantes se clasifican en grados y secciones. Un alumno puede estar en quinto grado, pero si los alumnos de quinto grado son muy numerosos, están divididos en secciones. Ejemplo: Grado 5, sección A, Grado 5, sección B.
  3. Los alumnos se colocan en aulas exclusivas. Un salón de clase será único en todas partes. El salón de clases de la Sección A del Grado 5 del año 2010 será diferente al Aula de la Sección A del Grado 5 del año 2011.
  4. Los estudiantes tienen padres asignados. Un padre puede tener más de un alumno en la escuela.
  5. Uno o más salones se pueden asignar a un maestro.
  6. La asistencia de los estudiantes a su maestro se realiza diariamente
  7. Habrá muchos tipos de exámenes. Los resultados del examen se almacenan para cada sujeto (curso).

Soy un principiante en la normalización de bases de datos y estaría contento si alguien pudiera darme algunas pistas si la base de datos se ve bien o no.

EDIT:

Además, no sólo habrá un punto de inicio de sesión. En el caso anterior, durante el inicio de sesión, un usuario tendrá que seleccionar el tipo de usuario de una lista desplegable. Esa selección desplegable se utilizará para consultar la tabla respectiva para iniciar sesión en el sistema. Otra alternativa es utilizar una tabla user común, que almacenará el user_id, email, password, last_login_date, last_login_ip, pero almacenará otros detalles en tablas respectivas, como student, parent, teacher. Entonces, ¿cuál es la forma preferida/correcta para implementarlo?

+3

Oye, ¿los alumnos de tu escuela solo pueden tener un padre? Bastante extraño :) Además, ¿por qué al salón de clases se le asigna solo un maestro? ¿No debería asignarse al curso? – Tadeck

+0

@Tadeck La tabla padre almacena detalles de un padre autorizado, que podrá ver y verificar los registros del alumno. No indica todos los detalles del padre del estudiante. Por ejemplo: A un padre se le puede emitir el nombre de usuario/contraseña del padre para controlar a su alumno. La madre también podría usarlo, pero generalmente solo uno podría hacerlo.En cuanto al aula, un aula solo tendrá UN maestro asignado que completará la asistencia/calificaciones de los alumnos en esa clase en particular. El curso se refiere a asignaturas que estudia un alumno. A los grados se les asignará asignaturas y a los salones se les asignarán calificaciones. – WebNovice

+3

@Damchey prepárese para que cosas como la regla 1-autorizado-padre puedan cambiar, y su aplicación tendrá que lidiar con ella de alguna manera. Puede ser una buena idea diseñar esto para que un alumno pueda tener cualquier número de tutores autorizados: puede limitar el número a 1 en el nivel de UI –

Respuesta

5

No modelas GRADE_SECTIONS en absoluto.

A menos que su escuela tenga un programa masivo de demolición y construcción cada verano, las aulas serán las mismas. Son las asignaciones que cambian cada año. Por lo tanto, las AULAS se deben asignar a una entidad separada GRADE_SECTION, en lugar de combinar SECCIONES y AULAS como lo hace ahora.

Los alumnos deben asignarse a GRADE_SECTIONS no a CLASSROOMS.

Los CURSOS deben tener muchos EXÁMENES en lugar de muchos EXAM_RESULTS. Simplemente no tiene sentido que los estudiantes aprendan un examen de francés aprendiendo matemáticas y ruso.

Cuestiones relacionadas