Changes between Initial Version and Version 1 of DatabaseProgramming


Ignore:
Timestamp:
05/30/26 17:09:34 (3 weeks ago)
Author:
231118
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v1 v1  
     1= Функции, Процедури и Тригери =
     2
     3== Функции ==
     4
     5Во системот се имплементирани функции кои се користат за пресметка на статистички податоци и добивање информации поврзани со рецепти и форум објави.
     6
     7=== get_forumpost_comments_count ===
     8
     9Ја враќа вкупната бројка на коментари за одреден форум пост.
     10
     11* Влезен параметар: `p_forumpost_id`
     12* Излез: број на коментари
     13
     14=== get_forumpost_likes_count ===
     15
     16Ја враќа вкупната бројка на лајкови за одреден форум пост.
     17
     18* Влезен параметар: `p_forumpost_id`
     19* Излез: број на лајкови
     20
     21=== get_recipe_average_rating ===
     22
     23Ја пресметува просечната оцена на избран рецепт.
     24
     25* Влезен параметар: `p_recipe_id`
     26* Излез: просечна оцена
     27
     28=== get_recipe_favorites_count ===
     29
     30Го враќа бројот на корисници кои го имаат додадено рецептот во омилени.
     31
     32* Влезен параметар: `p_recipe_id`
     33* Излез: број на омилени
     34
     35=== get_total_recipes_by_category ===
     36
     37Го пресметува бројот на рецепти во дадена категорија.
     38
     39* Влезен параметар: `p_category_id`
     40* Излез: број на рецепти
     41
     42=== get_total_recipes_by_cuisine ===
     43
     44Го пресметува бројот на рецепти за избран тип на кујна.
     45
     46* Влезен параметар: `p_cuisine_id`
     47* Излез: број на рецепти
     48
     49=== is_quick_recipe ===
     50
     51Проверува дали рецептот може да се подготви за најмногу 30 минути.
     52
     53* Влезен параметар: `p_recipe_id`
     54* Излез: TRUE/FALSE
     55
     56== Процедури ==
     57
     58Процедурите се користат за централизирано извршување на бизнис логиката и заштита на интегритетот на податоците.
     59
     60=== add_recipe_review ===
     61
     62Овозможува додавање рецензија за рецепт.
     63
     64Пред внесување се проверува:
     65
     66* дали корисникот го има пробано рецептот
     67* дали веќе има оставено рецензија
     68* дали оцената е во дозволени граници (1-5)
     69
     70=== add_forum_comment ===
     71
     72Додава нов коментар на форум пост.
     73
     74Се проверува:
     75
     76* дали содржината не е празна
     77* дали форум постот постои
     78
     79=== add_recipe_to_favorites ===
     80
     81Додава рецепт во листата на омилени рецепти на корисникот.
     82
     83Се спречува двојно додавање на ист рецепт.
     84
     85=== add_recipe_attempt ===
     86
     87Евидентира дека корисникот го има подготвено рецептот.
     88
     89Се спречува повеќекратно означување на истиот рецепт.
     90
     91=== remove_recipe_from_favorites ===
     92
     93Го отстранува рецептот од листата на омилени рецепти.
     94
     95=== delete_forum_comment ===
     96
     97Овозможува бришење на форум коментар.
     98
     99Пред бришење се проверува дали коментарот постои.
     100
     101=== add_recipe_dislike ===
     102
     103Додава dislike на рецепт.
     104
     105Се спречува повеќекратно додавање dislike од ист корисник.
     106
     107=== remove_recipe_dislike ===
     108
     109Го отстранува претходно додадениот dislike.
     110
     111=== add_forumpost_like ===
     112
     113Додава like на форум пост.
     114
     115Се спречува двојно лајкнување на ист пост од ист корисник.
     116
     117== Тригери ==
     118
     119Тригерите автоматски се активираат при INSERT или UPDATE операции и обезбедуваат валидација и интегритет на податоците.
     120
     121=== trg_validate_recipe_name ===
     122
     123Табела: `recipe`
     124
     125Проверува дали името на рецептот е внесено и не е празно.
     126
     127=== trg_validate_recipe_calories ===
     128
     129Табела: `recipe`
     130
     131Проверува дали бројот на калории е поголем или еднаков на нула.
     132
     133=== trg_validate_review_rating ===
     134
     135Табела: `recipe_review`
     136
     137Проверува дали оцената е во опсег од 1 до 5.
     138
     139=== trg_validate_recipe_review_attempt ===
     140
     141Табела: `recipe_review`
     142
     143Не дозволува оставање рецензија доколку корисникот претходно не го пробал рецептот.
     144
     145=== trg_validate_forum_comment ===
     146
     147Табела: `forumpost_comment`
     148
     149Проверува дали содржината на коментарот е валидна и не е празна.
     150
     151=== trg_prevent_duplicate_favorite ===
     152
     153Табела: `recipe_favorite`
     154
     155Спречува додавање на ист рецепт повеќе од еднаш во омилени.
     156
     157=== trg_prevent_duplicate_forumpost_like ===
     158
     159Табела: `forumpost_like`
     160
     161Спречува двојно лајкнување на форум пост.
     162
     163=== trg_prevent_duplicate_recipe_dislike ===
     164
     165Табела: `recipe_dislike`
     166
     167Спречува двојно додавање dislike за ист рецепт.
     168
     169=== trg_set_forumpost_created_at ===
     170
     171Табела: `forumpost`
     172
     173Автоматски го поставува полето `created_at` при креирање на нов форум пост.
     174
     175=== trg_set_comment_created_at ===
     176
     177Табела: `forumpost_comment`
     178
     179Автоматски го поставува полето `created_at` при креирање на нов коментар.
     180
     181=== trg_set_recipe_attempt_time ===
     182
     183Табела: `recipe_attempt`
     184
     185Автоматски го поставува времето на подготвување во полето `attempted_at`.
     186
     187== Заклучок ==
     188
     189Во системот се имплементирани:
     190
     191* 7 кориснички функции
     192* 9 процедури
     193* 11 тригери
     194
     195Овие механизми овозможуваат автоматска валидација на податоците, спречување на дупликати, автоматско пополнување на временски ознаки и обезбедување на конзистентност и интегритет на податоците во базата.