= Relation Design = == Опис == Базата на податоци е дизајнирана за систем за управување со рецепти кој опфаќа корисници, рецепти, состојки, преференции и форум функционалности. Системот овозможува персонализација преку дефинирање на кориснички алергии и преференции, како и интеракција преку коментари, лајкови и оценки. == Релациски дијаграм == [[Image(RelationalModel1.svg)]] == Главни ентитети == * '''user''' – содржи податоци за корисници (username, email, password) * '''recipe''' – рецепти со опис, нутритивни вредности и време за подготовка * '''ingredient''' – состојки што се користат во рецепти * '''category, tags, cuisine''' – класификација и организација на рецептите * '''allergen''' – алергени поврзани со состојки и корисници * '''preferences''' – кориснички поставки (калории, време за подготовка, итн.) == Релации == * '''1:1''' * user → preferences (еден корисник има една преференца) * '''1:N''' * recipe → instruction (еден рецепт содржи повеќе чекори) * instruction → instruction_media (еден чекор може да има повеќе медиуми) * user → forumpost (еден корисник може да креира повеќе постови) * '''N:M (преку посредни табли)''' * user ↔ role (user_role) * user ↔ allergen (user_allergen) * recipe ↔ category (recipe_category) * recipe ↔ tags (recipe_tags) * recipe ↔ ingredient (recipe_ingredient) * preferences ↔ cuisine (preferences_cuisine) == Форум и интеракции == * '''forumpost''' – постови креирани од корисници, со можност за поврзување со рецепт * '''forumpost_like''' – овозможува корисниците да означат допаѓање на постови * '''forumpost_comment''' – коментари со поддршка за вложени (nested) одговори == User–Recipe активности == * '''recipe_favorite''' – зачувување на омилени рецепти * '''recipe_attempt''' – евиденција за рецепти кои корисникот ги пробал * '''recipe_review''' – оценка и коментар (дозволено само ако постои attempt) * '''recipe_view''' – следење на прегледи на рецепти * '''recipe_dislike''' – означување рецепти кои не му се допаѓаат на корисникот == Ограничувања и интегритет == * PRIMARY KEY и FOREIGN KEY за одржување на релациски интегритет * UNIQUE ограничувања за спречување дупликати * CHECK constraints за валидација на податоци (email, password, вредности) * ON DELETE CASCADE / RESTRICT / SET NULL за контролирано бришење == Заклучок == Дизајнот е нормализиран и овозможува флексибилно управување со податоци, како и поддршка за комплексни релации и кориснички интеракции. == Attachments == * [attachment:RelationalModel-cooksy.vpp Visual Paradigm Project]