wiki:UseCase012

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

--

UC012 - Управување со предмети

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

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

Администраторот ја одржува понудата на предмети: додава нов предмет, ги менува неговите кредити, го распоредува во студиските програми и определува предуслови.

Сценарио

  1. Администраторот избира Предмети и потоа Нов предмет.
  1. Системот прикажува формулар за назив, шифра, кредити и потребни кредити за слушање.
  1. Администраторот ги внесува податоците и потврдува.
  1. Системот го запишува предметот. Називот и шифрата имаат ограничување UNIQUE, па дупликат не е можен.
    INSERT INTO project.subjects (name, code, awarded_credits, dependency_credit)
    VALUES ('Computer Graphics', 'F18L3S025', 6, 12)
    RETURNING id;
    
  1. Администраторот го распоредува предметот во една или повеќе студиски програми, со семестарот во кој се слуша.
    INSERT INTO project.major_subjects (major_id, subject_id, mandatory_semester)
    VALUES (1, (SELECT id FROM project.subjects WHERE code = 'F18L3S025'), 4);
    
  1. Администраторот определува предуслов за предметот.
    INSERT INTO project.dependency_subject (subject_id, dependency_id)
    VALUES ((SELECT id FROM project.subjects WHERE code = 'F18L3S025'),
            (SELECT id FROM project.subjects WHERE code = 'F18L1S002'));
    
  1. При измена на постоечки предмет, системот го ажурира записот.
    UPDATE project.subjects
    SET awarded_credits = 8,
        dependency_credit = 18
    WHERE code = 'F18L3S025';
    
  1. Системот ја прикажува обновената листа на предмети со нивните програми и предуслови.
    SELECT s.code, s.name, s.awarded_credits, m.name AS major, ms.mandatory_semester
    FROM project.subjects s
    LEFT JOIN project.major_subjects ms ON ms.subject_id = s.id
    LEFT JOIN project.major m           ON m.id = ms.major_id
    ORDER BY s.code, m.name;
    

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

  • 4а. Шифрата или називот веќе постојат - ограничувањата UNIQUE го одбиваат записот.
  • 6а. Обид предметот да биде сопствен предуслов - ограничувањето CHECK (subject_id <> dependency_id) го спречува.
  • 9а. Бришење на предмет кој веќе е слушан од студенти не е дозволено, бидејќи надворешните клучеви од semesters_subjects го спречуваат. Прво мора да се отстранат врските:
    DELETE FROM project.dependency_subject
    WHERE subject_id = (SELECT id FROM project.subjects WHERE code = 'F18L3S025')
       OR dependency_id = (SELECT id FROM project.subjects WHERE code = 'F18L3S025');
    
    DELETE FROM project.major_subjects
    WHERE subject_id = (SELECT id FROM project.subjects WHERE code = 'F18L3S025');
    
    DELETE FROM project.subjects WHERE code = 'F18L3S025';
    
Note: See TracWiki for help on using the wiki.