| Version 1 (modified by , 13 days ago) ( diff ) |
|---|
UC012 - Управување со предмети
Иницијален актер: Администратор
Други актери: -
Администраторот ја одржува понудата на предмети: додава нов предмет, ги менува неговите кредити, го распоредува во студиските програми и определува предуслови.
Сценарио
- Администраторот избира Предмети и потоа Нов предмет.
- Системот прикажува формулар за назив, шифра, кредити и потребни кредити за слушање.
- Администраторот ги внесува податоците и потврдува.
- Системот го запишува предметот. Називот и шифрата имаат ограничување UNIQUE, па дупликат не е можен.
INSERT INTO project.subjects (name, code, awarded_credits, dependency_credit) VALUES ('Computer Graphics', 'F18L3S025', 6, 12) RETURNING id;
- Администраторот го распоредува предметот во една или повеќе студиски програми, со семестарот во кој се слуша.
INSERT INTO project.major_subjects (major_id, subject_id, mandatory_semester) VALUES (1, (SELECT id FROM project.subjects WHERE code = 'F18L3S025'), 4);
- Администраторот определува предуслов за предметот.
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'));
- При измена на постоечки предмет, системот го ажурира записот.
UPDATE project.subjects SET awarded_credits = 8, dependency_credit = 18 WHERE code = 'F18L3S025';
- Системот ја прикажува обновената листа на предмети со нивните програми и предуслови.
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.
