| Version 1 (modified by , 6 days ago) ( diff ) |
|---|
Use-case 0005 Implementation - Персонализирани препораки на книги
Иницирачки актер: Купувач
Други актери: Нема
Опис
Најавениот корисник може да добива персонализирани препораки на книги според неговите зачувани преференции за жанрови и категории. Дополнително, корисникот може да избере моментално расположение или потреба, по што апликацијата ги прикажува книгите поврзани со избраното расположение.
Сценарио
- Корисникот се најавува во апликацијата и ја отвора страницата „Мои преференции“, каде што може да избере жанрови и категории што го интересираат.
- Корисникот избира еден или повеќе жанрови и категории. Во примерот се избрани жанрот „Продуктивност“ и категоријата „Кариера“, по што корисникот го притиска копчето „Зачувај ги преференциите“.
- Системот ги зачувува избраните жанрови и категории за најавениот корисник. Претходно зачуваните преференции се бришат, а новоизбраните се внесуваат во базата на податоци.
За жанровите се користат следните SQL наредби:
DELETE FROM project.preferira_zhanr WHERE korisnik_id = %s;
INSERT INTO project.preferira_zhanr
(korisnik_id, zhanr_id, datum_dodavanje)
VALUES
(%s, %s, CURRENT_DATE);
За категориите се користат следните SQL наредби:
DELETE FROM project.preferira_kategorija WHERE korisnik_id = %s;
INSERT INTO project.preferira_kategorija
(korisnik_id, kategorija_id, datum_dodavanje)
VALUES
(%s, %s, CURRENT_DATE);
- По зачувувањето на преференциите, системот го пренасочува корисникот кон страницата „Препораки“. Системот ги споредува зачуваните преференции на корисникот со жанровите и категориите на книгите и ги прикажува книгите што одговараат на неговите интереси.
За добивање на персонализираните препораки се користи следната SQL наредба:
SELECT DISTINCT
k.kniga_id,
k.naslov,
k.cena,
k.opis,
k.godina_izdavanje
FROM project.knigi k
WHERE
EXISTS (
SELECT 1
FROM project.ima_zhanr iz
JOIN project.preferira_zhanr pz
ON iz.zhanr_id = pz.zhanr_id
WHERE iz.kniga_id = k.kniga_id
AND pz.korisnik_id = %s
)
OR
EXISTS (
SELECT 1
FROM project.ima_kategorija ik
JOIN project.preferira_kategorija pk
ON ik.kategorija_id = pk.kategorija_id
WHERE ik.kniga_id = k.kniga_id
AND pk.korisnik_id = %s
)
ORDER BY k.kniga_id;
- На истата страница корисникот може да избере и моментално расположение или потреба од понудените опции: „Мотивација“, „Релаксација“, „Инспирација“, „Фокус“ и „Личен развој“.
Расположенијата се вчитуваат од базата со следната SQL наредба:
SELECT raspolozenie_id, naziv, opis FROM project.raspolozenija ORDER BY raspolozenie_id;
- Корисникот избира расположение. Во примерот е избрана „Релаксација“. Системот го пронаоѓа избраното расположение со следната SQL наредба:
SELECT raspolozenie_id, naziv, opis FROM project.raspolozenija WHERE raspolozenie_id = %s;
- Системот ги пронаоѓа книгите поврзани со избраното расположение преку табелата
project.povrzana_so.
SELECT
k.kniga_id,
k.naslov,
k.cena,
k.opis,
k.godina_izdavanje
FROM project.knigi k
JOIN project.povrzana_so p
ON k.kniga_id = p.kniga_id
WHERE p.raspolozenie_id = %s
ORDER BY k.kniga_id;
- Системот ги прикажува книгите што одговараат на избраното расположение. Во примерот за „Релаксација“ се прикажуваат соодветните книги поврзани со ова расположение.
Attachments (5)
- UseCase0005_1.png (84.9 KB ) - added by 6 days ago.
- UseCase0005_2.png (143.7 KB ) - added by 6 days ago.
- UseCase0005_3.png (116.7 KB ) - added by 6 days ago.
- UseCase0005_4.png (177.6 KB ) - added by 6 days ago.
- UseCase0005_5.png (156.1 KB ) - added by 6 days ago.
Download all attachments as: .zip





