wiki:UseCase0005

Version 1 (modified by 223306, 10 days ago) ( diff )

--

Use-case UC0005 - Персонализирани препораки за книги

Иницирачки актер: Купувач

Други актери: Нема

Опис:

Најавениот купувач може да добие персонализирани препораки за книги врз основа на неговите преферирани жанрови, категории и избрани расположенија.

Сценарио

  1. Купувачот ја отвора страницата со персонализирани препораки.
  1. Системот ги пронаоѓа преферираните жанрови на најавениот купувач.
SELECT z.zhanr_id, z.naziv
FROM project.preferira_zhanr p
JOIN project.zhanrovi z ON p.zhanr_id = z.zhanr_id
WHERE p.korisnik_id = 1
ORDER BY z.zhanr_id;
  1. Системот ги пронаоѓа книгите што одговараат на преферираните жанрови.
SELECT DISTINCT k.kniga_id, k.naslov, k.cena
FROM project.knigi k
JOIN project.ima_zhanr iz ON k.kniga_id = iz.kniga_id
JOIN project.preferira_zhanr pz ON iz.zhanr_id = pz.zhanr_id
WHERE pz.korisnik_id = 1
ORDER BY k.naslov;
  1. Системот ги пронаоѓа преферираните категории на купувачот.
SELECT k.kategorija_id, k.naziv
FROM project.preferira_kategorija pk
JOIN project.kategorii k ON pk.kategorija_id = k.kategorija_id
WHERE pk.korisnik_id = 1
ORDER BY k.kategorija_id;
  1. Системот ги пронаоѓа книгите што одговараат на преферираните категории.
SELECT DISTINCT k.kniga_id, k.naslov, k.cena
FROM project.knigi k
JOIN project.ima_kategorija ik ON k.kniga_id = ik.kniga_id
JOIN project.preferira_kategorija pk ON ik.kategorija_id = pk.kategorija_id
WHERE pk.korisnik_id = 1
ORDER BY k.naslov;
  1. Системот ги пронаоѓа избраните расположенија на купувачот.
SELECT r.raspolozenie_id, r.naziv
FROM project.izbira_raspolozenie ir
JOIN project.raspolozenija r
    ON ir.raspolozenie_id = r.raspolozenie_id
WHERE ir.korisnik_id = 1
ORDER BY r.raspolozenie_id;
  1. Системот ги пронаоѓа книгите што одговараат на избраните расположенија.
SELECT DISTINCT k.kniga_id, k.naslov, k.cena
FROM project.knigi k
JOIN project.povrzana_so ps
    ON k.kniga_id = ps.kniga_id
JOIN project.izbira_raspolozenie ir
    ON ps.raspolozenie_id = ir.raspolozenie_id
WHERE ir.korisnik_id = 1
ORDER BY k.naslov;
  1. Системот ги комбинира жанровите, категориите и расположенијата и ги прикажува персонализираните препораки.
SELECT DISTINCT k.kniga_id, k.naslov, k.cena
FROM project.knigi k
LEFT JOIN project.ima_zhanr iz
    ON k.kniga_id = iz.kniga_id
LEFT JOIN project.preferira_zhanr pz
    ON iz.zhanr_id = pz.zhanr_id AND pz.korisnik_id = 1
LEFT JOIN project.ima_kategorija ik
    ON k.kniga_id = ik.kniga_id
LEFT JOIN project.preferira_kategorija pk
    ON ik.kategorija_id = pk.kategorija_id AND pk.korisnik_id = 1
LEFT JOIN project.povrzana_so ps
    ON k.kniga_id = ps.kniga_id
LEFT JOIN project.izbira_raspolozenie ir
    ON ps.raspolozenie_id = ir.raspolozenie_id AND ir.korisnik_id = 1
WHERE pz.korisnik_id IS NOT NULL
   OR pk.korisnik_id IS NOT NULL
   OR ir.korisnik_id IS NOT NULL
ORDER BY k.naslov;
  1. Купувачот ги прегледува добиените персонализирани препораки.
Note: See TracWiki for help on using the wiki.