wiki:UseCase005

Version 2 (modified by 233149, 2 weeks ago) ( diff )

--

UC005 - Приказ на предмети по семестар

Иницијален актер: Студент

Други актери: -

Студентот сака да ги види предметите кои ги слуша во одреден запишан семестар, со професорот, кредитите, потписот и оценката доколку предметот е положен.

Сценарио

  1. Студентот ја отвора страницата Предмети или избира семестар од UC004.
  1. Системот ги презема предметите на избраниот запишан семестар. Оценката е LEFT JOIN, бидејќи предметите кои сè уште не се положени немаат ред во passed_subjects.
    SELECT s.code,
           s.name AS subject,
           s.awarded_credits,
           ss.signature,
           p.name || ' ' || p.surname AS professor,
           ps.grade,
           ps.date_passed
    FROM project.semesters_subjects ss
    JOIN project.subjects s              ON s.id = ss.subjects_id
    JOIN project.users p                 ON p.id = ss.professor_id
    LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id
    WHERE ss.enrolled_semesters_id = 1
    ORDER BY s.name;
    
  1. Системот го пресметува бројот на потписи и освоените кредити во тој семестар.
    SELECT count(*) FILTER (WHERE ss.signature)        AS signatures,
           count(*)                                    AS total_subjects,
           coalesce(sum(s.awarded_credits) FILTER (WHERE ps.id IS NOT NULL), 0) AS earned_credits
    FROM project.semesters_subjects ss
    JOIN project.subjects s              ON s.id = ss.subjects_id
    LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id
    WHERE ss.enrolled_semesters_id = 1;
    
  1. Системот ја прикажува табелата со предметите и резимето со потписи и кредити.

Забелешки

  • Ограничувањето UNIQUE (enrolled_semesters_id, subjects_id) гарантира дека ист предмет не може да се појави двапати во ист запишан семестар.
  • Предуслови за предметите се чуваат во dependency_subject и можат да се прикажат дополнително.
Note: See TracWiki for help on using the wiki.