sql >> Database >  >> RDS >> Mysql

Wat is een goed database-ontwerp (schema) voor een aanwezigheidsdatabase?

In vechtsporten zijn instructeurs ook studenten -- dus de Instructor tabel is gesubtypeerd naar de Student tafel. Alle algemene velden staan ​​in de Student tabel en alleen kolommen die specifiek zijn voor instructeurs staan ​​in de Instructor tafel.

De Art tabel heeft een lijst met kunsten die de school aanbiedt (judo, karate ...).

De school kan meerdere kamers hebben, deze staan ​​vermeld in de Room tafel.

ClassSchedule beschrijft het gepubliceerde lesrooster dat de school aanbiedt.

Aanwezigheid wordt vastgelegd in de Attendance tafel.

Eén rij in de Calendar tafel is één kalenderdag (datum). De tabel heeft datum-eigenschappen zoals DayOfWeek , MonthName , MonthNumberInYear enz.

Eén rij in de TimeTable is één minuut van een dag, bijvoorbeeld 7:05.

Kalender en Tijdtabel zorgen voor eenvoudige aanwezigheidsrapportage op datum/tijd, bijvoorbeeld

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

Ik hoop dat je hiermee aan de slag kunt.



  1. Selecteer eerste en laatste tijdstempel waar userID uniek is

  2. Aan de slag met SQL op Oracle Application Express

  3. SQL Server - IN-clausule met meerdere velden

  4. Oracle verbinden met Amazon Aurora