wiki:DatabaseProgramming

Version 1 (modified by 231118, 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 тригери

Овие механизми овозможуваат автоматска валидација на податоците, спречување на дупликати, автоматско пополнување на временски ознаки и обезбедување на конзистентност и интегритет на податоците во базата.

Note: See TracWiki for help on using the wiki.