Changes between Initial Version and Version 1 of UseCase014


Ignore:
Timestamp:
09/15/26 11:41:07 (13 days ago)
Author:
233149
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase014

    v1 v1  
     1== UC014 - Распоредување на професори по предмети
     2
     3'''Иницијален актер:''' Администратор
     4
     5'''Други актери:''' -
     6
     7Администраторот определува кој професор кој предмет го предава во кој активен
     8семестар. Ова распоредување е предуслов за запишување на семестар, бидејќи
     9предметот кој никој не го предава не може да се запише.
     10
     11=== Сценарио
     12
     13 1. Администраторот избира '''Распоред''' и избира активен семестар.
     14
     15 2. Системот го прикажува тековниот распоред за тој семестар.
     16{{{#!sql
     17SELECT s.code, s.name AS subject, p.name || ' ' || p.surname AS professor
     18FROM project.professour_subjects ps
     19JOIN project.subjects s ON s.id = ps.subject_id
     20JOIN project.users p    ON p.id = ps.prof_id
     21WHERE ps.active_semester_id = 3
     22ORDER BY s.code;
     23}}}
     24
     25 3. Системот ги прикажува професорите достапни за распоредување.
     26{{{#!sql
     27SELECT id, name || ' ' || surname AS professor
     28FROM project.users
     29WHERE role = 'prof'
     30ORDER BY surname;
     31}}}
     32
     33 4. Администраторот избира предмет и професор и потврдува.
     34
     35 5. Системот го запишува распоредувањето. Примарниот клуч е составен од трите колони, па исто распоредување не може да се внесе двапати.
     36{{{#!sql
     37INSERT INTO project.professour_subjects (prof_id, active_semester_id, subject_id)
     38VALUES (5, 3, 20)
     39ON CONFLICT (prof_id, active_semester_id, subject_id) DO NOTHING;
     40}}}
     41
     42 6. Ако професорот повеќе не го предава предметот, администраторот го отстранува распоредувањето.
     43{{{#!sql
     44DELETE FROM project.professour_subjects
     45WHERE prof_id = 5 AND active_semester_id = 3 AND subject_id = 20;
     46}}}
     47
     48 7. Системот покажува колку предмети предава секој професор во тој семестар, за да се види оптовареноста.
     49{{{#!sql
     50SELECT p.name || ' ' || p.surname AS professor, count(*) AS subjects
     51FROM project.professour_subjects ps
     52JOIN project.users p ON p.id = ps.prof_id
     53WHERE ps.active_semester_id = 3
     54GROUP BY p.id, p.name, p.surname
     55ORDER BY subjects DESC, professor;
     56}}}
     57
     58=== Алтернативни текови
     59
     60 * '''6а.''' Отстранување на распоредувањето не ги менува веќе запишаните предмети, бидејќи semesters_subjects.professor_id се запишува при запишувањето и останува непроменет.
     61
     62=== Забелешки
     63
     64 * Табелата professour_subjects е тројна врска меѓу users, active_semesters и subjects, со составен примарен клуч од трите надворешни клучеви.
     65 * Ист предмет може да го предаваат повеќе професори во ист семестар; при запишување системот избира еден од нив.