Mysql
 sql >> Database >  >> RDS >> Mysql

Che cos'è un buon progetto di database (schema) per un database di presenze?

Nelle arti marziali, anche gli istruttori sono studenti, quindi l'Instructor la tabella è sottotipizzata per lo Student tavolo. Tutti i campi comuni sono in Student la tabella e solo le colonne specifiche per gli istruttori si trovano in Instructor tabella.

L'Art la tabella ha l'elenco delle arti che la scuola offre (judo, karate...).

La scuola può avere più aule, queste sono elencate nella Room tabella.

ClassSchedule descrive l'orario pubblicato delle classi offerte dalla scuola.

La partecipazione viene acquisita nel Attendance tabella.

Una riga nel Calendar la tabella è un giorno di calendario (data). La tabella ha proprietà di data come DayOfWeek , MonthName , MonthNumberInYear ecc.

Una riga nella TimeTable è un minuto al giorno, come le 7:05.

Il calendario e l'orario consentono una facile segnalazione delle presenze per data/ora, ad esempio

-- Attendance of judo morning classes
-- for the first three months of the year 2010
-- by day of a week (Sun, Mon, Tue, ..)
select
    DayOfWeek
  , count(1) as Students
from ClassSchedule as a
join Calendar      as b on b.CalendarId = a.CalendarId
join TimeTable     as c on c.TimeID     = a.StartTimeId
join Attendance    as d on d.ClassId    = a.ClassID
join Art           as e on e.ArtId      = a.ArtID
where ArtName = 'judo'
  and Year    = 2010
  and MonthNumberInYear between 1 and 3
  and PartOfDay = 'morning'
group by DayOfWeek ;

Spero che questo ti permetta di iniziare.