wiki:UseCase009

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

--

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

Иницијален актер: Професор

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

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

Сценарио

  1. Професорот се најавува и избира Студенти од менито.
  1. Системот го чита идентификаторот на професорот од пристапниот токен и ги презема сите студенти на неговите предмети. Студентот се добива преку запишаниот семестар, а оценката е LEFT JOIN бидејќи најголем дел од студентите сè уште немаат оценка.
    SELECT s.id   AS subject_id,
           s.code,
           s.name AS subject,
           u.id   AS student_id,
           u."index",
           u.name || ' ' || u.surname AS student,
           ps.grade,
           a.year,
           a.type
    FROM project.semesters_subjects ss
    JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
    JOIN project.users u               ON u.id  = es.user_id
    JOIN project.subjects s            ON s.id  = ss.subjects_id
    JOIN project.active_semesters a    ON a.id  = es.semester_id
    LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id
    WHERE ss.professor_id = 4
    ORDER BY s.name, u.surname;
    
  1. Системот ги групира редовите по предмет и ја прикажува табелата со студент, индекс, предмет, семестар и тековна оценка. Студентите без оценка се прикажани со ознака дека сè уште не се оценети.
  1. Професорот по желба филтрира по предмет или пребарува по индекс на студент.
  1. Професорот избира студент за да внесе или измени оценка, со што се преминува на UC010 или UC011.

Забелешки

  • Условот ss.professor_id = 4 е и проверка на овластување: професорот ги добива само студентите на своите предмети, бидејќи филтрирањето се врши во самата база, а не во апликацијата.
  • Во моделот semesters_subjects нема директна врска кон студентот, па студентот се добива преку enrolled_semesters.user_id.
Note: See TracWiki for help on using the wiki.