| | 1 | = Use-case 0005 Implementation - Персонализирани препораки на книги = |
| | 2 | |
| | 3 | '''Иницирачки актер:''' Купувач |
| | 4 | |
| | 5 | '''Други актери:''' Нема |
| | 6 | |
| | 7 | == Опис == |
| | 8 | |
| | 9 | Најавениот корисник може да добива персонализирани препораки на книги според неговите зачувани преференции за жанрови и категории. Дополнително, корисникот може да избере моментално расположение или потреба, по што апликацијата ги прикажува книгите поврзани со избраното расположение. |
| | 10 | |
| | 11 | == Сценарио == |
| | 12 | |
| | 13 | 1. Корисникот се најавува во апликацијата и ја отвора страницата „Мои преференции“, каде што може да избере жанрови и категории што го интересираат. |
| | 14 | |
| | 15 | [[Image(UseCase0005_1.png, width=800)]] |
| | 16 | |
| | 17 | 2. Корисникот избира еден или повеќе жанрови и категории. Во примерот се избрани жанрот „Продуктивност“ и категоријата „Кариера“, по што корисникот го притиска копчето „Зачувај ги преференциите“. |
| | 18 | |
| | 19 | [[Image(UseCase0005_2.png, width=800)]] |
| | 20 | |
| | 21 | 3. Системот ги зачувува избраните жанрови и категории за најавениот корисник. Претходно зачуваните преференции се бришат, а новоизбраните се внесуваат во базата на податоци. |
| | 22 | |
| | 23 | За жанровите се користат следните SQL наредби: |
| | 24 | |
| | 25 | {{{ |
| | 26 | #!sql |
| | 27 | DELETE FROM project.preferira_zhanr |
| | 28 | WHERE korisnik_id = %s; |
| | 29 | }}} |
| | 30 | |
| | 31 | {{{ |
| | 32 | #!sql |
| | 33 | INSERT INTO project.preferira_zhanr |
| | 34 | (korisnik_id, zhanr_id, datum_dodavanje) |
| | 35 | VALUES |
| | 36 | (%s, %s, CURRENT_DATE); |
| | 37 | }}} |
| | 38 | |
| | 39 | За категориите се користат следните SQL наредби: |
| | 40 | |
| | 41 | {{{ |
| | 42 | #!sql |
| | 43 | DELETE FROM project.preferira_kategorija |
| | 44 | WHERE korisnik_id = %s; |
| | 45 | }}} |
| | 46 | |
| | 47 | {{{ |
| | 48 | #!sql |
| | 49 | INSERT INTO project.preferira_kategorija |
| | 50 | (korisnik_id, kategorija_id, datum_dodavanje) |
| | 51 | VALUES |
| | 52 | (%s, %s, CURRENT_DATE); |
| | 53 | }}} |
| | 54 | |
| | 55 | 4. По зачувувањето на преференциите, системот го пренасочува корисникот кон страницата „Препораки“. Системот ги споредува зачуваните преференции на корисникот со жанровите и категориите на книгите и ги прикажува книгите што одговараат на неговите интереси. |
| | 56 | |
| | 57 | За добивање на персонализираните препораки се користи следната SQL наредба: |
| | 58 | |
| | 59 | {{{ |
| | 60 | #!sql |
| | 61 | SELECT DISTINCT |
| | 62 | k.kniga_id, |
| | 63 | k.naslov, |
| | 64 | k.cena, |
| | 65 | k.opis, |
| | 66 | k.godina_izdavanje |
| | 67 | FROM project.knigi k |
| | 68 | WHERE |
| | 69 | EXISTS ( |
| | 70 | SELECT 1 |
| | 71 | FROM project.ima_zhanr iz |
| | 72 | JOIN project.preferira_zhanr pz |
| | 73 | ON iz.zhanr_id = pz.zhanr_id |
| | 74 | WHERE iz.kniga_id = k.kniga_id |
| | 75 | AND pz.korisnik_id = %s |
| | 76 | ) |
| | 77 | OR |
| | 78 | EXISTS ( |
| | 79 | SELECT 1 |
| | 80 | FROM project.ima_kategorija ik |
| | 81 | JOIN project.preferira_kategorija pk |
| | 82 | ON ik.kategorija_id = pk.kategorija_id |
| | 83 | WHERE ik.kniga_id = k.kniga_id |
| | 84 | AND pk.korisnik_id = %s |
| | 85 | ) |
| | 86 | ORDER BY k.kniga_id; |
| | 87 | }}} |
| | 88 | |
| | 89 | [[Image(UseCase0005_3.png, width=800)]] |
| | 90 | |
| | 91 | 5. На истата страница корисникот може да избере и моментално расположение или потреба од понудените опции: „Мотивација“, „Релаксација“, „Инспирација“, „Фокус“ и „Личен развој“. |
| | 92 | |
| | 93 | Расположенијата се вчитуваат од базата со следната SQL наредба: |
| | 94 | |
| | 95 | {{{ |
| | 96 | #!sql |
| | 97 | SELECT raspolozenie_id, naziv, opis |
| | 98 | FROM project.raspolozenija |
| | 99 | ORDER BY raspolozenie_id; |
| | 100 | }}} |
| | 101 | |
| | 102 | [[Image(UseCase0005_4.png, width=800)]] |
| | 103 | |
| | 104 | 6. Корисникот избира расположение. Во примерот е избрана „Релаксација“. Системот го пронаоѓа избраното расположение со следната SQL наредба: |
| | 105 | |
| | 106 | {{{ |
| | 107 | #!sql |
| | 108 | SELECT raspolozenie_id, naziv, opis |
| | 109 | FROM project.raspolozenija |
| | 110 | WHERE raspolozenie_id = %s; |
| | 111 | }}} |
| | 112 | |
| | 113 | 7. Системот ги пронаоѓа книгите поврзани со избраното расположение преку табелата `project.povrzana_so`. |
| | 114 | |
| | 115 | {{{ |
| | 116 | #!sql |
| | 117 | SELECT |
| | 118 | k.kniga_id, |
| | 119 | k.naslov, |
| | 120 | k.cena, |
| | 121 | k.opis, |
| | 122 | k.godina_izdavanje |
| | 123 | FROM project.knigi k |
| | 124 | JOIN project.povrzana_so p |
| | 125 | ON k.kniga_id = p.kniga_id |
| | 126 | WHERE p.raspolozenie_id = %s |
| | 127 | ORDER BY k.kniga_id; |
| | 128 | }}} |
| | 129 | |
| | 130 | 8. Системот ги прикажува книгите што одговараат на избраното расположение. Во примерот за „Релаксација“ се прикажуваат соодветните книги поврзани со ова расположение. |
| | 131 | |
| | 132 | [[Image(UseCase0005_5.png, width=800)]] |