| Version 1 (modified by , 2 weeks ago) ( diff ) |
|---|
Функции, Процедури и Тригери
Функции
Во системот се имплементирани функции кои се користат за пресметка на статистички податоци и добивање информации поврзани со рецепти и форум објави.
get_forumpost_comments_count
Ја враќа вкупната бројка на коментари за одреден форум пост.
- Влезен параметар:
p_forumpost_id - Излез: број на коментари
get_forumpost_likes_count
Ја враќа вкупната бројка на лајкови за одреден форум пост.
- Влезен параметар:
p_forumpost_id - Излез: број на лајкови
get_recipe_average_rating
Ја пресметува просечната оцена на избран рецепт.
- Влезен параметар:
p_recipe_id - Излез: просечна оцена
get_recipe_favorites_count
Го враќа бројот на корисници кои го имаат додадено рецептот во омилени.
- Влезен параметар:
p_recipe_id - Излез: број на омилени
get_total_recipes_by_category
Го пресметува бројот на рецепти во дадена категорија.
- Влезен параметар:
p_category_id - Излез: број на рецепти
get_total_recipes_by_cuisine
Го пресметува бројот на рецепти за избран тип на кујна.
- Влезен параметар:
p_cuisine_id - Излез: број на рецепти
is_quick_recipe
Проверува дали рецептот може да се подготви за најмногу 30 минути.
- Влезен параметар:
p_recipe_id - Излез: TRUE/FALSE
Процедури
Процедурите се користат за централизирано извршување на бизнис логиката и заштита на интегритетот на податоците.
add_recipe_review
Овозможува додавање рецензија за рецепт.
Пред внесување се проверува:
- дали корисникот го има пробано рецептот
- дали веќе има оставено рецензија
- дали оцената е во дозволени граници (1-5)
add_forum_comment
Додава нов коментар на форум пост.
Се проверува:
- дали содржината не е празна
- дали форум постот постои
add_recipe_to_favorites
Додава рецепт во листата на омилени рецепти на корисникот.
Се спречува двојно додавање на ист рецепт.
add_recipe_attempt
Евидентира дека корисникот го има подготвено рецептот.
Се спречува повеќекратно означување на истиот рецепт.
remove_recipe_from_favorites
Го отстранува рецептот од листата на омилени рецепти.
delete_forum_comment
Овозможува бришење на форум коментар.
Пред бришење се проверува дали коментарот постои.
add_recipe_dislike
Додава dislike на рецепт.
Се спречува повеќекратно додавање dislike од ист корисник.
remove_recipe_dislike
Го отстранува претходно додадениот dislike.
add_forumpost_like
Додава like на форум пост.
Се спречува двојно лајкнување на ист пост од ист корисник.
Тригери
Тригерите автоматски се активираат при INSERT или UPDATE операции и обезбедуваат валидација и интегритет на податоците.
trg_validate_recipe_name
Табела: recipe
Проверува дали името на рецептот е внесено и не е празно.
trg_validate_recipe_calories
Табела: recipe
Проверува дали бројот на калории е поголем или еднаков на нула.
trg_validate_review_rating
Табела: recipe_review
Проверува дали оцената е во опсег од 1 до 5.
trg_validate_recipe_review_attempt
Табела: recipe_review
Не дозволува оставање рецензија доколку корисникот претходно не го пробал рецептот.
trg_validate_forum_comment
Табела: forumpost_comment
Проверува дали содржината на коментарот е валидна и не е празна.
trg_prevent_duplicate_favorite
Табела: recipe_favorite
Спречува додавање на ист рецепт повеќе од еднаш во омилени.
trg_prevent_duplicate_forumpost_like
Табела: forumpost_like
Спречува двојно лајкнување на форум пост.
trg_prevent_duplicate_recipe_dislike
Табела: recipe_dislike
Спречува двојно додавање dislike за ист рецепт.
trg_set_forumpost_created_at
Табела: forumpost
Автоматски го поставува полето created_at при креирање на нов форум пост.
trg_set_comment_created_at
Табела: forumpost_comment
Автоматски го поставува полето created_at при креирање на нов коментар.
trg_set_recipe_attempt_time
Табела: recipe_attempt
Автоматски го поставува времето на подготвување во полето attempted_at.
Заклучок
Во системот се имплементирани:
- 7 кориснички функции
- 9 процедури
- 11 тригери
Овие механизми овозможуваат автоматска валидација на податоците, спречување на дупликати, автоматско пополнување на временски ознаки и обезбедување на конзистентност и интегритет на податоците во базата.
