Nas artes marciais, os instrutores também são alunos -- então o
Instructor
tabela é subtipada para o Student
tabela. Todos os campos comuns estão no Student
tabela e apenas colunas específicas para instrutores estão no Instructor
tabela. A
Art
tabela tem lista de artes que a escola oferece (judô, karatê...). A escola pode ter várias salas, estas estão listadas na
Room
tabela. ClassSchedule
descreve o cronograma publicado de aulas que a escola oferece. A participação é capturada em
Attendance
tabela. Uma linha no
Calendar
tabela é um dia de calendário (data). A tabela tem propriedades de data como DayOfWeek
, MonthName
, MonthNumberInYear
etc. Uma linha na
TimeTable
é um minuto de um dia, como 7:05. Calendário e Tabela de Horários permitem relatórios fáceis de presença por data/hora, por exemplo
-- 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 ;
Espero que isso faça você começar.