Changes between Initial Version and Version 1 of UseCase012


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

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase012

    v1 v1  
     1== UC012 - Управување со предмети
     2
     3'''Иницијален актер:''' Администратор
     4
     5'''Други актери:''' -
     6
     7Администраторот ја одржува понудата на предмети: додава нов предмет, ги менува
     8неговите кредити, го распоредува во студиските програми и определува предуслови.
     9
     10=== Сценарио
     11
     12 1. Администраторот избира '''Предмети''' и потоа '''Нов предмет'''.
     13
     14 2. Системот прикажува формулар за назив, шифра, кредити и потребни кредити за слушање.
     15
     16 3. Администраторот ги внесува податоците и потврдува.
     17
     18 4. Системот го запишува предметот. Називот и шифрата имаат ограничување UNIQUE, па дупликат не е можен.
     19{{{#!sql
     20INSERT INTO project.subjects (name, code, awarded_credits, dependency_credit)
     21VALUES ('Computer Graphics', 'F18L3S025', 6, 12)
     22RETURNING id;
     23}}}
     24
     25 5. Администраторот го распоредува предметот во една или повеќе студиски програми, со семестарот во кој се слуша.
     26{{{#!sql
     27INSERT INTO project.major_subjects (major_id, subject_id, mandatory_semester)
     28VALUES (1, (SELECT id FROM project.subjects WHERE code = 'F18L3S025'), 4);
     29}}}
     30
     31 6. Администраторот определува предуслов за предметот.
     32{{{#!sql
     33INSERT INTO project.dependency_subject (subject_id, dependency_id)
     34VALUES ((SELECT id FROM project.subjects WHERE code = 'F18L3S025'),
     35        (SELECT id FROM project.subjects WHERE code = 'F18L1S002'));
     36}}}
     37
     38 7. При измена на постоечки предмет, системот го ажурира записот.
     39{{{#!sql
     40UPDATE project.subjects
     41SET awarded_credits = 8,
     42    dependency_credit = 18
     43WHERE code = 'F18L3S025';
     44}}}
     45
     46 8. Системот ја прикажува обновената листа на предмети со нивните програми и предуслови.
     47{{{#!sql
     48SELECT s.code, s.name, s.awarded_credits, m.name AS major, ms.mandatory_semester
     49FROM project.subjects s
     50LEFT JOIN project.major_subjects ms ON ms.subject_id = s.id
     51LEFT JOIN project.major m           ON m.id = ms.major_id
     52ORDER BY s.code, m.name;
     53}}}
     54
     55=== Алтернативни текови
     56
     57 * '''4а.''' Шифрата или називот веќе постојат - ограничувањата UNIQUE го одбиваат записот.
     58 * '''6а.''' Обид предметот да биде сопствен предуслов - ограничувањето CHECK (subject_id <> dependency_id) го спречува.
     59 * '''9а.''' Бришење на предмет кој веќе е слушан од студенти не е дозволено, бидејќи надворешните клучеви од semesters_subjects го спречуваат. Прво мора да се отстранат врските:
     60{{{#!sql
     61DELETE FROM project.dependency_subject
     62WHERE subject_id = (SELECT id FROM project.subjects WHERE code = 'F18L3S025')
     63   OR dependency_id = (SELECT id FROM project.subjects WHERE code = 'F18L3S025');
     64
     65DELETE FROM project.major_subjects
     66WHERE subject_id = (SELECT id FROM project.subjects WHERE code = 'F18L3S025');
     67
     68DELETE FROM project.subjects WHERE code = 'F18L3S025';
     69}}}