wiki:AdvancedReports

Version 4 (modified by 201165, 7 days ago) ( diff )

--

Nutritioneer | Напредни извештаи од базата

​Алатка за релациона алгебра

Ознака Операција
σ
π
⋈
⟕
γ
τ
−
ω
←
SUM(x | у)

Извештај 1: Преглед на активноста во заедницата

Account Activity Log

Опис на барањата за податоци

Извештајот покажува колку е активна секоја сметка во четирите дела на апликацијата. За секој корисник ги брои креираните рецепти, објавите, коментарите и записите во дневникот, заедно со неговата улога од USER кон RECIPE, POST, COMMENT и INTAKE_PLANNER.

SQL - приказ

SELECT u.username,
       u.role,
       COUNT(DISTINCT r.id)  AS recipes_created,
       COUNT(DISTINCT p.id)  AS posts_created,
       COUNT(DISTINCT c.id)  AS comments_written,
       COUNT(DISTINCT ip.id) AS diary_entries
FROM "user" u
LEFT JOIN recipe r          ON r.user_id  = u.id
LEFT JOIN post p            ON p.user_id  = u.id
LEFT JOIN comment c         ON c.user_id  = u.id
LEFT JOIN intake_planner ip ON ip.user_id = u.id
GROUP BY u.id, u.username, u.role
ORDER BY recipes_created DESC, posts_created DESC, u.username;

Релациона алгебра - приказ

τ_{recipes_created DESC, posts_created DESC, username} (
  γ_{u.id, u.username, u.role;
      COUNT(DISTINCT r.id)  → recipes_created,
      COUNT(DISTINCT p.id)  → posts_created,
      COUNT(DISTINCT c.id)  → comments_written,
      COUNT(DISTINCT ip.id) → diary_entries} (
    User ⟕_{u.id = r.user_id}  Recipe
         ⟕_{u.id = p.user_id}  Post
         ⟕_{u.id = c.user_id}  Comment
         ⟕_{u.id = ip.user_id} Intake_Planner
  )
)

Извештај 2: Профил на макронутриенти по порција

Health Stat Check

Опис на барањата за податоци

Протеини, јаглехидрати, масти и влакна во една порција од секој рецепт. Спојува две одделни M:N врски во еден нутритивен приказ: рецепт содржи состојки, а состојка содржи нутриенти. За секој рецепт пресметува колку грама од секој макронутриент дава една порција, и ги рангира рецептите по протеини.

  • (нутриент на 100 g) × (употребени грамови) / 100 преку сите состојки, поделен со бројот на порции.

SQL - приказ

SELECT r.name                          AS recipe,
       ROUND(r.kcal_sum / r.servings)  AS kcal_per_portion,
       ROUND(SUM(CASE WHEN n.description = 'Protein'
                      THEN icn.quantity * rci.ingredient_quantity / 100
                 END) / r.servings, 1) AS protein_g,
       ROUND(SUM(CASE WHEN n.description = 'Total carbohydrate'
                      THEN icn.quantity * rci.ingredient_quantity / 100
                 END) / r.servings, 1) AS carbs_g,
       ROUND(SUM(CASE WHEN n.description = 'Total fat'
                      THEN icn.quantity * rci.ingredient_quantity / 100
                 END) / r.servings, 1) AS fat_g,
       ROUND(SUM(CASE WHEN n.description = 'Dietary fibre'
                      THEN icn.quantity * rci.ingredient_quantity / 100
                 END) / r.servings, 1) AS fibre_g
FROM recipe r
JOIN recipe_contains_ingredient   rci ON rci.recipe_id     = r.id
JOIN ingredient_contains_nutrient icn ON icn.ingredient_id = rci.ingredient_id
JOIN nutrient n                       ON n.id              = icn.nutrient_id
WHERE n.type = 'macro'
GROUP BY r.id, r.name, r.kcal_sum, r.servings
ORDER BY protein_g DESC;

Релациона алгебра - приказ

amount ≡ icn.quantity · rci.ingredient_quantity / 100

τ_{protein_g DESC} (
  γ_{r.id, r.name, r.kcal_sum, r.servings;
      SUM(amount | n.description = 'Protein')            / r.servings → protein_g,
      SUM(amount | n.description = 'Total carbohydrate') / r.servings → carbs_g,
      SUM(amount | n.description = 'Total fat')          / r.servings → fat_g,
      SUM(amount | n.description = 'Dietary fibre')      / r.servings → fibre_g} (
    σ_{n.type = 'macro'} (
      Recipe
        ⋈_{r.id = rci.recipe_id}              Recipe_Contains_Ingredient
        ⋈_{rci.ingredient_id = icn.ingredient_id} Ingredient_Contains_Nutrient
        ⋈_{icn.nutrient_id = n.id}            Nutrient
    )
  )
)

Извештај 3: Целосно растителни рецепти

Опис на барањата за податоци

SQL - приказ

Релациона алгебра - приказ

Извештај 4: Ден со најголем внес по корисник

Опис на барањата за податоци

SQL - приказ

Релациона алгебра - приказ

Навигација низ проектот

​Почетна страна

Фаза Име на фаза Статус
P0 ​Дефинирање проект Одобрен
P1 ​Концептуален дизајн и ЕР Дијаграм Одобрен
P2 ​Логички и физички дизајн - DDL Одобрен
P3 ​Кориснички/апикациски сценарија со базата на податоци Одобрен
P4 ​Протип со основни функционалности WIP
М1 Презентација на прототип WIP
P5 ​Нормализација и оптимизација на дизајн WIP
P6 ​Напредни извештаи од базата WIP
P7 ​Понапреден развој на базата WIP
P8 ​Напреден апликативен развој WIP
P9 ​Дополнителни имплементации WIP
М2 Финализиран проект WIP

(Trac навигација)

Note: See TracWiki for help on using the wiki.