Changes between Version 4 and Version 5 of Normalization


Ignore:
Timestamp:
04/20/26 18:54:06 (2 weeks ago)
Author:
233062
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v4 v5  
    1 = **Нормализација**
     1# **Нормализација**
    22
    33== **Де-нормализирана база на податоци**
     
    55Се тргнува од една глобална, де-нормализирана релација што ги содржи атрибутите од целиот модел:
    66
    7 `R = { user_id, email, username, password, training_user_id, training_gender, training_age, training_weight, training_id, training_date, training_type, training_duration, training_calories, investor_user_id, asset_id, asset_ticker_symbol, asset_buy_price, asset_buy_date, asset_quantity, weight_user_id, weight_current, weight_height, weight_goal_weight, weight_goal_calories, daily_intake_id, daily_intake_date, daily_intake_calories, discipline_user_id, custom_tracking_id, custom_tracking_name, task_id, task_name, task_finished, daily_completion_id, daily_completion_date, daily_completion_percent, finance_user_id, finance_spending_budget, finance_saving_budget, finance_investing_budget, finance_donation_budget, finance_credit, income_id, income_date, income_amount }`
     7`R = { user_id, email, username, password, training_user_id, training_gender, training_age, training_weight, training_id, training_date, training_type, training_duration, training_calories, investor_user_id, asset_id, asset_ticker_symbol, asset_buy_price, asset_buy_date, asset_quantity, weight_user_id, weight_current, weight_height, weight_goal_weight, weight_goal_calories, daily_intake_id, daily_intake_date, daily_intake_calories, discipline_user_id, custom_tracking_id, custom_tracking_name, task_id, name, is_finished, daily_completion_id, daily_completion_date, procent, finance_user_id, finance_spending_budget, finance_saving_budget, finance_investing_budget, finance_donation_budget, finance_credit, income_id, income_date, income_amount }`
    88
    99Оваа релација е де-нормализирана затоа што содржи повторливи групи, како и зависности од атрибути што не се клуч.
     
    2222- **FD10:** `discipline_user_id -> user_id`
    2323- **FD11:** `custom_tracking_id -> user_id, custom_tracking_name`
    24 - **FD12:** `task_id -> discipline_user_id, custom_tracking_id, task_name, task_finished`
    25 - **FD13:** `daily_completion_id -> user_id, daily_completion_date, daily_completion_percent`
     24- **FD12:** `task_id -> discipline_user_id, custom_tracking_id, name, is_finished`
     25- **FD13:** `daily_completion_id -> user_id, daily_completion_date, procent`
    2626- **FD14:** `(task_id, daily_completion_id) -> /`
    2727- **FD15:** `finance_user_id -> finance_spending_budget, finance_saving_budget, finance_investing_budget, finance_donation_budget, finance_credit`
     
    3131
    3232- **Леви:** `user_id, email, username, training_user_id, training_id, investor_user_id, asset_id, weight_user_id, daily_intake_id, discipline_user_id, custom_tracking_id, task_id, daily_completion_id, finance_user_id, income_id`
    33 - **Десен:** `password, training_gender, training_age, training_weight, training_date, training_type, training_duration, training_calories, asset_ticker_symbol, asset_buy_price, asset_buy_date, asset_quantity, weight_current, weight_height, weight_goal_weight, weight_goal_calories, daily_intake_date, daily_intake_calories, custom_tracking_name, task_name, task_finished, daily_completion_date, daily_completion_percent, finance_spending_budget, finance_saving_budget, finance_investing_budget, finance_donation_budget, finance_credit, income_date, income_amount`
    34 
    35 **Леви и десен дел:**
    36 
    37 - `user_id, training_user_id, training_id, investor_user_id, asset_id, weight_user_id, daily_intake_id, discipline_user_id, custom_tracking_id, task_id, daily_completion_id, finance_user_id, income_id`
     33- **Десен:** `password, training_gender, training_age, training_weight, training_date, training_type, training_duration, training_calories, asset_ticker_symbol, asset_buy_price, asset_buy_date, asset_quantity, weight_current, weight_height, weight_goal_weight, weight_goal_calories, daily_intake_date, daily_intake_calories, custom_tracking_name, name, is_finished, daily_completion_date, procent, finance_spending_budget, finance_saving_budget, finance_investing_budget, finance_donation_budget, finance_credit, income_date, income_amount`
    3834
    3935== **Глобална релација**
    4036
    41 `R = { user_id, email, username, password, training_user_id, training_gender, training_age, training_weight, training_id, training_date, training_type, training_duration, training_calories, investor_user_id, asset_id, asset_ticker_symbol, asset_buy_price, asset_buy_date, asset_quantity, weight_user_id, weight_current, weight_height, weight_goal_weight, weight_goal_calories, daily_intake_id, daily_intake_date, daily_intake_calories, discipline_user_id, custom_tracking_id, custom_tracking_name, task_id, task_name, task_finished, daily_completion_id, daily_completion_date, daily_completion_percent, finance_user_id, finance_spending_budget, finance_saving_budget, finance_investing_budget, finance_donation_budget, finance_credit, income_id, income_date, income_amount }`
     37`R = { user_id, email, username, password, training_user_id, training_gender, training_age, training_weight, training_id, training_date, training_type, training_duration, training_calories, investor_user_id, asset_id, asset_ticker_symbol, asset_buy_price, asset_buy_date, asset_quantity, weight_user_id, weight_current, weight_height, weight_goal_weight, weight_goal_calories, daily_intake_id, daily_intake_date, daily_intake_calories, discipline_user_id, custom_tracking_id, custom_tracking_name, task_id, name, is_finished, daily_completion_id, daily_completion_date, procent, finance_user_id, finance_spending_budget, finance_saving_budget, finance_investing_budget, finance_donation_budget, finance_credit, income_id, income_date, income_amount }`
    4238
    4339== **Покривачи**
     
    5248- **`discipline_user_id+`** = { `discipline_user_id`, `user_id` } -> **не ги содржи сите атрибути**
    5349- **`custom_tracking_id+`** = { `custom_tracking_id`, `user_id`, `custom_tracking_name` } -> **не ги содржи сите атрибути**
    54 - **`task_id+`** = { `task_id`, `discipline_user_id`, `custom_tracking_id`, `task_name`, `task_finished` } -> **не ги содржи сите атрибути**
    55 - **`daily_completion_id+`** = { `daily_completion_id`, `user_id`, `daily_completion_date`, `daily_completion_percent` } -> **не ги содржи сите атрибути**
     50- **`task_id+`** = { `task_id`, `discipline_user_id`, `custom_tracking_id`, `name`, `is_finished` } -> **не ги содржи сите атрибути**
     51- **`daily_completion_id+`** = { `daily_completion_id`, `user_id`, `daily_completion_date`, `procent` } -> **не ги содржи сите атрибути**
    5652- **`finance_user_id+`** = { `finance_user_id`, `finance_spending_budget`, `finance_saving_budget`, `finance_investing_budget`, `finance_donation_budget`, `finance_credit` } -> **не ги содржи сите атрибути**
    5753- **`income_id+`** = { `income_id`, `finance_user_id`, `income_date`, `income_amount` } -> **не ги содржи сите атрибути**
     
    6662`{ user_id, training_user_id, training_id, investor_user_id, asset_id, weight_user_id, daily_intake_id, discipline_user_id, custom_tracking_id, task_id, daily_completion_id, finance_user_id, income_id }`
    6763
    68 Во нашата нормализирана конструкција, ова е теоретскиот глобален кандидат-ключ на де-нормализираната релација.
     64Во нашата нормализирана конструкција, ова е теоретскиот глобален кандидат-клуч на де-нормализираната релација.
    6965
    7066Избран примарен клуч: **`{ user_id, training_user_id, training_id, investor_user_id, asset_id, weight_user_id, daily_intake_id, discipline_user_id, custom_tracking_id, task_id, daily_completion_id, finance_user_id, income_id }`**
     
    8682**Прва декомпозиција**
    8783
    88 - `TASKS(task_id, discipline_user_id, custom_tracking_id, task_name, task_finished)`
     84- `TASKS(task_id, discipline_user_id, custom_tracking_id, name, is_finished)`
    8985- `TASK_DAILY_COMPLETION(task_id, daily_completion_id)`
    9086
     
    114110- **`DISCIPLINE_USERS(user_id)`**
    115111- **`CUSTOM_TRACKING_CATEGORIES(custom_tracking_id, user_id, name)`**
    116 - **`TASKS(task_id, discipline_user_id, custom_tracking_id, task_name, task_finished)`**
     112- **`TASKS(task_id, discipline_user_id, custom_tracking_id, name, is_finished)`**
    117113- **`DAILY_COMPLETION(daily_completion_id, user_id, date, procent)`**
    118114- **`TASK_DAILY_COMPLETION(task_id, daily_completion_id)`**
     
    144140== **Проверка за БКНФ**
    145141
    146 Сите добиени релации се во БКНФ, бидејќи секој детерминант е кандидат-ключ во својата релација.
     142Сите добиени релации се во БКНФ, бидејќи секој детерминант е кандидат-клуч во својата релација.
    147143
    148144Особено:
     
    186182- **API форматот** може да остане стабилен, додека внатрешната шема е нормализирана.
    187183- **DDL и DML скриптите** треба да ја следат оваа шема.
    188