wiki:Normalization

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

--

Nutritioneer | Нормализација и оптимизација на дизајн

Денормализирана форма

Рамна табела од сите ентитети на Nutritioneer и нивните врски, без структурни ограничувања. Повеќевредносните факти се присутни како групи што се повторуваат: еден рецепт има многу состојки, многу диететски ограничувања и многу коментари, а една состојка носи многу нутриенти.

Функционални зависности

  • user_id → email, username, password, role
  • email → user_id (алтернативен клуч, UNIQUE)
  • username → user_id (алтернативен клуч, UNIQUE)
  • ingredient_id → ingredient_name, ingr_description, energy, kcal, ingr_type
  • ingredient_name → ingredient_id (алтернативен клуч, UNIQUE)
  • nutrient_id → nutr_description, rdi_quantity, unit, nutr_type
  • nutr_description → nutrient_id (алтернативен клуч, UNIQUE)
  • restriction_id → restr_description, restr_type
  • restr_description → restriction_id (алтернативен клуч, UNIQUE)
  • recipe_id → recipe_name, guide, kcal_sum, servings, user_id
  • post_id → media, media_type, media_name, is_private, is_favourite, status, post_created_at, user_id, recipe_id
  • recipe_id → post_id (POSTS_ON е 1:1, UNIQUE врз recipe_id)
  • comment_id → comment_text, comment_created_at, post_id, user_id
  • list_id → list_date_time, list_notes, is_bought, list_kcal, user_id
  • planner_id → planner_date_time, planner_notes, planner_kcal, is_consumed, user_id
  • bio_id → bio_date, weight, height, age, muscle_fat_ratio, user_id
  • {user_id, bio_date} → bio_id (едно мерење по корисник на ден)
  • {recipe_id, ingredient_id} → ingredient_quantity
  • {ingredient_id, nutrient_id} → nutrient_amount
  • {list_id, ingredient_id} → buy_quantity

Чисти M:N врски

Врските како recipe - restriction и grocery_list - grocery_list_bulk_add_ingredient неможат да определат дополнителен атрибут. Не се функционални зависности.

Почетна денормализирана релација

R( user_id, email, username, password, role, ingredient_id, ingredient_name, ingr_description, energy, kcal, ingr_type, nutrient_id, nutr_description, rdi_quantity, unit, nutr_type, restriction_id, restr_description, restr_type, recipe_id, recipe_name, guide, kcal_sum, servings, post_id, media, media_type, media_name, is_private, is_favourite, status, post_created_at, comment_id, comment_text, comment_created_at, list_id, list_date_time, list_notes, is_bought, list_kcal, planner_id, planner_date_time, planner_notes, planner_kcal, is_consumed, bio_id, bio_date, weight, height, age, muscle_fat_ratio, ingredient_quantity, nutrient_amount, buy_quantity )

Кандидат-клуч

1.X+ = R 2.X е минимално

Кандидати клучеви се следните:

K = { comment_id, ingredient_id, nutrient_id, restriction_id, list_id, planner_id, bio_id }

===

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

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

Фаза Име на фаза Статус
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.