wiki:DatabaseProgramming

Version 2 (modified by 231118, 14 hours ago) ( diff )

--

Функции, Процедури и Тригери

Функции

Во системот се имплементирани функции кои се користат за пресметка на статистички податоци и добивање информации поврзани со рецепти и форум објави.

get_forumpost_comments_count

Ја враќа вкупната бројка на коментари за одреден форум пост.

  • Влезен параметар: p_forumpost_id
  • Излез: број на коментари

get_forumpost_likes_count

Ја враќа вкупната бројка на лајкови за одреден форум пост.

  • Влезен параметар: p_forumpost_id
  • Излез: број на лајкови

get_total_recipes_by_cuisine

Го пресметува бројот на рецепти за избран тип на кујна.

  • Влезен параметар: p_cuisine_id
  • Излез: број на рецепти

get_total_recipes_by_category

Го пресметува бројот на рецепти во дадена категорија.

  • Влезен параметар: p_category_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 операции и обезбедуваат автоматско пополнување на временски ознаки.

trg_set_comment_created_at

Табела: forumpost_comment

Автоматски го поставува полето created_at при креирање на нов коментар доколку вредноста не е внесена.

trg_set_forumpost_created_at

Табела: forumpost

Автоматски го поставува полето created_at при креирање на нов форум пост доколку вредноста не е внесена.

trg_set_recipe_attempt_time

Табела: recipe_attempt

Автоматски го поставува времето на подготовка во полето attempted_at при внесување нов запис.

Заклучок

Во системот се имплементирани:

  • 5 кориснички функции
  • 9 процедури
  • 3 тригери

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

Note: See TracWiki for help on using the wiki.