| Version 1 (modified by , 13 days ago) ( diff ) |
|---|
UC014 - Распоредување на професори по предмети
Иницијален актер: Администратор
Други актери: -
Администраторот определува кој професор кој предмет го предава во кој активен семестар. Ова распоредување е предуслов за запишување на семестар, бидејќи предметот кој никој не го предава не може да се запише.
Сценарио
- Администраторот избира Распоред и избира активен семестар.
- Системот го прикажува тековниот распоред за тој семестар.
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;
- Системот ги прикажува професорите достапни за распоредување.
SELECT id, name || ' ' || surname AS professor FROM project.users WHERE role = 'prof' ORDER BY surname;
- Администраторот избира предмет и професор и потврдува.
- Системот го запишува распоредувањето. Примарниот клуч е составен од трите колони, па исто распоредување не може да се внесе двапати.
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;
- Ако професорот повеќе не го предава предметот, администраторот го отстранува распоредувањето.
DELETE FROM project.professour_subjects WHERE prof_id = 5 AND active_semester_id = 3 AND subject_id = 20;
- Системот покажува колку предмети предава секој професор во тој семестар, за да се види оптовареноста.
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.
