sql >> Databasteknik >  >> RDS >> Mysql

Vad är en bra databasdesign (schema) för en närvarodatabas?

Inom kampsport är instruktörer också elever -- så Instructor tabellen underskrivs till Student tabell. Alla vanliga fält finns i Student Tabell och endast kolumner specifika för instruktörer finns i Instructor bord.

Art Tabellen har en lista över konster som skolan erbjuder (judo, karate ...).

Skolan kan ha flera rum, dessa finns listade i Room bord.

ClassSchedule beskriver det publicerade schemat för klasser som skolan erbjuder.

Närvaro registreras i Attendance bord.

En rad i Calendar tabellen är en kalenderdag (datum). Tabellen har datumegenskaper som DayOfWeek , MonthName , MonthNumberInYear etc.

En rad i TimeTable är en minut av dagen, som 7:05.

Kalender och tidtabell möjliggör enkel närvarorapportering efter datum/tid, till exempel

-- 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 ;

Hoppas detta får dig igång.



  1. Hur man bibehåller ordningen för insättning i SQL Server

  2. Hur gör man:Rengör en mysql InnoDB-lagringsmotor?

  3. ORACLE - ORA-01843:inte en giltig månad

  4. Slutför Laravel 8 Soft Delete &Restore Deleted Records Tutorial