wiki:UseCase014

Version 1 (modified by 233149, 13 days ago) ( diff )

--

UC014 - Распоредување на професори по предмети

Иницијален актер: Администратор

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

Администраторот определува кој професор кој предмет го предава во кој активен семестар. Ова распоредување е предуслов за запишување на семестар, бидејќи предметот кој никој не го предава не може да се запише.

Сценарио

  1. Администраторот избира Распоред и избира активен семестар.
  1. Системот го прикажува тековниот распоред за тој семестар.
    SELECT s.code, s.name AS subject, p.name || ' ' || p.surname AS professor
    FROM project.professour_subjects ps
    JOIN project.subjects s ON s.id = ps.subject_id
    JOIN project.users p    ON p.id = ps.prof_id
    WHERE ps.active_semester_id = 3
    ORDER BY s.code;
    
  1. Системот ги прикажува професорите достапни за распоредување.
    SELECT id, name || ' ' || surname AS professor
    FROM project.users
    WHERE role = 'prof'
    ORDER BY surname;
    
  1. Администраторот избира предмет и професор и потврдува.
  1. Системот го запишува распоредувањето. Примарниот клуч е составен од трите колони, па исто распоредување не може да се внесе двапати.
    INSERT INTO project.professour_subjects (prof_id, active_semester_id, subject_id)
    VALUES (5, 3, 20)
    ON CONFLICT (prof_id, active_semester_id, subject_id) DO NOTHING;
    
  1. Ако професорот повеќе не го предава предметот, администраторот го отстранува распоредувањето.
    DELETE FROM project.professour_subjects
    WHERE prof_id = 5 AND active_semester_id = 3 AND subject_id = 20;
    
  1. Системот покажува колку предмети предава секој професор во тој семестар, за да се види оптовареноста.
    SELECT p.name || ' ' || p.surname AS professor, count(*) AS subjects
    FROM project.professour_subjects ps
    JOIN project.users p ON p.id = ps.prof_id
    WHERE ps.active_semester_id = 3
    GROUP BY p.id, p.name, p.surname
    ORDER BY subjects DESC, professor;
    

Алтернативни текови

  • 6а. Отстранување на распоредувањето не ги менува веќе запишаните предмети, бидејќи semesters_subjects.professor_id се запишува при запишувањето и останува непроменет.

Забелешки

  • Табелата professour_subjects е тројна врска меѓу users, active_semesters и subjects, со составен примарен клуч од трите надворешни клучеви.
  • Ист предмет може да го предаваат повеќе професори во ист семестар; при запишување системот избира еден од нив.
Note: See TracWiki for help on using the wiki.