wiki:appdesign

Version 4 (modified by 155036, 9 days ago) ( diff )

--

Апликативен дизајн - Случаи на употреба и Сценарија за пристап до базата - SQL Погледи

Актери

  • Нерегистриран корисник
    • Може да прегледува јавни податоци за настани
    • Нема пристап до напредни анализи и предвидувања
  • Регистриран корисник
    • Има пристап до персонализирани извештаи
    • Може да добива известувања за релевантни настани
    • Може да управува со сопствени поставки
  • Аналитичар
    • Ги анализира податоците за настани, актери и конфликти
    • Генерира детални извештаи
    • Работи со моделите за предвидување
  • Истражувач
    • Ги користи податоците за сопствени истражувања
    • Може да прави пребарувања и извлекува податоци за подлабока анализа
    • Нема пристап до административните функционалности
  • Администратор
    • Управува со корисници и нивните претплати
    • Може да креира, уредува и брише податоци
    • Надгледува и контролира системот

Сценарија

1. Регистрација и најава на корисник

  • Актер: Корисник (аналитичар, истражувач, администратор)
  • Опис: Корисникот се регистрира преку формулар внесувајќи име, презиме, е-пошта и лозинка. По успешна регистрација, може да се најави во системот со своите акредитиви.
  • Алтернативен тек: Ако внесените податоци не се валидни, системот враќа порака за грешка.

2. Преглед на настани

  • Актер: Корисник (аналитичар, истражувач)
  • Опис: Корисникот прегледува листа на регистрирани настани, филтрирани според датум, локација, актер или тип на настан.
  • Алтернативен тек: Ако нема достапни податоци за избраните критериуми, се прикажува порака „Нема резултати за дадените параметри“.

3. Анализа на актер

  • Актер: Аналитичар
  • Опис: Корисникот пребарува специфичен актер и ги анализира неговите поврзани настани, предвидувања и конфликти.
  • Алтернативен тек: Ако актерот не постои, системот враќа порака „Нема информации за избраниот актер“.

4. Генерирање извештаи

  • Актер: Корисник (аналитичар, администратор)
  • Опис: Корисникот избира параметри за извештај (период, актер, локација) и системот генерира табеларен и графички приказ на податоците.
  • Алтернативен тек: Ако нема податоци за избраните критериуми, системот враќа празен извештај со соодветна порака.

5. Следење на конфликти

  • Актер: Аналитичар
  • Опис: Корисникот прегледува прогнози за можни конфликти базирани на ризик фактори и историски податоци.
  • Алтернативен тек: Ако нема достапни предвидувања за избраната област, системот враќа информација „Нема предвидени конфликти“.

6. Управување со претплати

  • Актер: Администратор
  • Опис: Администраторот креира, уредува или брише претплати на корисници врз база на избраниот план (број на анализи, известувања).
  • Алтернативен тек: Ако корисникот нема активна претплата, системот го известува дека треба да се претплати за пристап до функционалностите.

7. Известувања за нови настани

  • Актер: Корисник
  • Опис: Корисникот добива автоматски известувања кога системот регистрира нов настан или предвиден ризик во избраната категорија.
  • Алтернативен тек: Ако нема нови настани или корисникот нема претплата за известувања, системот не испраќа известување.

Најважни случаи на употреба

1. Преглед на настани

Оваа SQL наредба ги селектира првите 50 записи од табелата events, вклучувајќи ги global_event_id, sql_date, event_code, goldstein_scale, num_mentions, num_sources, num_articles и avg_tone. Податоците се подредени по датум (sql_date) во опаѓачки редослед (од најновиот кон најстариот).

SELECT 
    e.global_event_id, e.sql_date, e.event_code, e.goldstein_scale, 
    e.num_mentions, e.num_sources, e.num_articles, e.avg_tone 
FROM events e 
ORDER BY e.sql_date DESC
LIMIT 50;

2. Анализа на актер

Оваа SQL наредба ги селектира actor_name од табелата actors, заедно со global_event_id, event_code, sql_date, num_mentions и avg_tone од табелата events. Се прави спојување (JOIN) на actors и event_details преку actor_id, како и на event_details и events преку global_event_id. Филтрира само записи за актерот со actor_id = 5003 и ги прикажува настаните подредени по sql_date во опаѓачки редослед.

SELECT 
    a.actor_name, e.global_event_id, e.event_code, e.sql_date, 
    e.num_mentions, e.avg_tone 
FROM actors a
JOIN event_details ed ON a.actor_id = ed.actor_id
JOIN events e ON ed.global_event_id = e.global_event_id
WHERE a.actor_id = 5003
ORDER BY e.sql_date DESC;

3. Следење на конфликти

Оваа SQL наредба ги селектира conflict_id, имињата на два актери (actor_1 и actor_2), risk_score, predicted_date и description од табелата conflict_risk. Се прави спојување (JOIN) со табелата actors за да се добијат имињата на актерите преку actor1_id и actor2_id. Филтрира само конфликти со предвидена дата поголема или еднаква на тековниот датум (CURRENT_DATE) и ги подредува резултатите според risk_score во опаѓачки редослед (од највисок кон најнизок ризик).

SELECT 
    cr.conflict_id, a1.actor_name AS actor_1, 
    a2.actor_name AS actor_2, cr.risk_score, 
    cr.predicted_date, cr.description 
FROM conflict_risk cr
JOIN actors a1 ON cr.actor1_id = a1.actor_id
JOIN actors a2 ON cr.actor2_id = a2.actor_id
WHERE cr.predicted_date >= CURRENT_DATE
ORDER BY cr.risk_score DESC;

4. Генерирање извештаи

Оваа SQL наредба ги селектира prediction_id, global_event_id, името на актерот (actor_name), prediction_type, confidence_score и predicted_date од табелата predictions. Се прави спојување (JOIN) со табелата events преку event_id и со табелата actors преку actor_id. Филтрира предвидувања чија предвидена дата е во последните 30 дена (од тековниот датум наназад) и ги подредува резултатите според confidence_score во опаѓачки редослед (од највисок кон најнизок степен на доверба).

SELECT 
    p.prediction_id, e.global_event_id, a.actor_name, 
    p.prediction_type, p.confidence_score, p.predicted_date 
FROM predictions p
JOIN events e ON p.event_id = e.global_event_id
JOIN actors a ON p.actor_id = a.actor_id
WHERE p.predicted_date BETWEEN CURRENT_DATE - INTERVAL '30 days' AND CURRENT_DATE
ORDER BY p.confidence_score DESC;

5. Известувања за нови настани

Оваа SQL наредба ги селектира notification_id, email на корисникот, global_event_id, event_code, notification_date и status од табелата notifications. Се прави спојување (JOIN) со табелата users преку user_id и со табелата events преку event_id. Филтрира известувања испратени во последните 7 дена (почнувајќи од тековниот датум наназад) и ги подредува резултатите според notification_date во опаѓачки редослед (од најнови до најстари).

SELECT 
    n.notification_id, u.email, e.global_event_id, 
    e.event_code, n.notification_date, n.status 
FROM notifications n
JOIN users u ON n.user_id = u.user_id
JOIN events e ON n.event_id = e.global_event_id
WHERE n.notification_date >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY n.notification_date DESC;
Note: See TracWiki for help on using the wiki.