13

Sto creando un sistema per un sistema di gestione scolastica e viene fornito lo schema del database allegato.Normalizzazione del database per il sistema di gestione della scuola

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

seguito è come funziona il sistema:

  1. Una scuola ha molti studenti e insegnanti. Ha anche molti corsi (materie) insegnate. A un livello può essere assegnato più corsi. Questi corsi a loro volta saranno assegnati agli studenti in quel particolare grado.
  2. I livelli degli studenti sono classificati in gradi e sezioni. Uno studente può essere di grado 5, ma se gli studenti di grado 5 hanno un numero enorme, sono divisi in sezioni. es .: Sezione 5 di Grado A, Sezione 5 di B. Grado
  3. Gli studenti sono collocati in aule uniche. Un'aula sarà unica in tutto. La classe A della classe 5 di grado 5 dell'anno 2010 sarà diversa dalla classe della sezione 5 di grado 5 dell'anno 2011.
  4. Gli studenti vengono assegnati ai genitori. Un genitore può avere più di uno studente nella scuola.
  5. Una o più classi possono essere assegnate a un insegnante.
  6. La frequenza degli studenti viene assunta dal proprio insegnante su base giornaliera
  7. Ci saranno molti tipi di esami. I risultati dell'esame sono archiviati per ogni materia (corso).

Sono un principiante nella normalizzazione del database e sarei lieto se qualcuno potesse darmi qualche suggerimento se il database sembra a posto o no.

EDIT:

Inoltre, ci sarà solo un punto di accesso. Nel caso precedente, durante l'accesso, un utente dovrà selezionare il tipo di utente da un elenco a discesa. Quella selezione a discesa verrà utilizzata per eseguire query sulla rispettiva tabella per accedere al sistema. Un'altra alternativa consiste nell'utilizzare una tabella comune user, che memorizzerà lo user_id, email, password, last_login_date, last_login_ip ma archivierà altri dettagli nelle rispettive tabelle, ad esempio student, parent, teacher. Quindi, qual è il modo preferito/corretto per implementarlo?

+3

Ehi, gli studenti della tua scuola possono avere un solo genitore? Piuttosto strano :) Inoltre, perché in classe viene assegnato un solo insegnante? Non dovrebbe essere assegnato al corso? – Tadeck

+0

@Tadeck La tabella padre memorizza i dettagli di un genitore autorizzato, che sarà in grado di visualizzare e controllare i record degli studenti. Non indica tutti i dettagli principali dello studente. Ad esempio: a un padre potrebbe essere assegnato il nome utente/password genitore per controllare il suo studente. La madre potrebbe anche usarlo, ma generalmente solo uno sarebbe in grado di farlo.Per quanto riguarda l'aula, a un'aula sarà assegnato UN solo insegnante di classe che riempie la frequenza/i voti degli studenti in quella particolare classe. Il corso si riferisce a Materie di uno studente. I voti saranno assegnati alle materie e le classi saranno assegnate ai voti. – WebNovice

+3

@Damchey essere preparati che cose come la regola 1-genitore autorizzato potrebbe cambiare, e la tua app sarà tenuta a gestirlo in qualche modo. Potrebbe essere una buona idea progettare questo in modo che uno studente possa avere un numero qualsiasi di tutori autorizzati - è quindi possibile limitare il numero a 1 su livello UI –

risposta

5

Non si modella affatto GRADE_SECTIONS.

A meno che la tua scuola non abbia un massiccio programma di demolizione e costruzione ogni estate, le aule saranno le stesse. Sono gli incarichi che cambiano ogni anno. Quindi CLASSROOMS dovrebbe essere assegnato a un'entità GRADE_SECTION separata, invece di unire SEZIONI e CLASSI come ora.

Gli studenti devono essere assegnati a GRADE_SECTIONS e non a CLASSE.

I CORSI devono avere molti EXAM anziché molti EXAM_RESULTS. Semplicemente non ha senso che un esame francese possa essere preso dagli studenti che imparano matematica e russo.