Changes between Version 1 and Version 2 of normalization


Ignore:
Timestamp:
02/27/26 04:10:45 (27 hours ago)
Author:
231020
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • normalization

    v1 v2  
    11= Нормализација - TradingMK =
     2
     3== Де-нормализирана форма на базата ==
    24
    35=== Универзална релација ===
     
    1820  oauth_token, oauth_email, oauth_provider, oauth_expires_at, oauth_created_at
    1921)
     22}}}
     23
     24'''Напомени за именување:'''
     25 * trade_stock_symbol е преименуван (наспроти stock_symbol) за да избегне конфликт на имиња во универзалната релација
     26 * auth_provider е атрибут кој претставува вредност од user_auth_providers - повеќевредносен по природа
     27 * Нема дупликати на имиња на атрибути во универзалната релација
     28
     29=== Функционални зависности ===
     30
     31Ги идентификуваме сите функционални зависности кои важат глобално во универзалната релација.
     32
     33'''F = {'''
     34 * '''FD1:'''  user_id → username, password, email, role
     35 * '''FD2:'''  username → user_id
     36 * '''FD3:'''  email → user_id
     37 * '''FD4:'''  portfolio_id → balance, user_id
     38 * '''FD5:'''  user_id → portfolio_id
     39 * '''FD6:'''  stock_id → stock_symbol, stock_name, current_price, last_price, percentage, turnover, last_updated
     40 * '''FD7:'''  stock_symbol → stock_id
     41 * '''FD8:'''  holding_id → holding_quantity, avg_price, portfolio_id, stock_id
     42 * '''FD9:'''  history_id → history_price, history_timestamp, stock_id
     43 * '''FD10:''' trade_id → trade_type, trade_status, trade_quantity, price_per_unit, trade_timestamp, trade_stock_symbol, portfolio_id
     44 * '''FD11:''' transaction_id → txn_type, txn_quantity, txn_price, txn_timestamp, txn_origin, user_id, stock_id
     45 * '''FD12:''' watchlist_id → price_above, price_below, user_id, stock_id
     46 * '''FD13:''' oauth_token → oauth_email, oauth_provider, oauth_expires_at, oauth_created_at, user_id
     47'''}'''
     48
     49
     50=== Кандидат клучеви и примарен клуч ===
     51
     52
     53==== Класификација на атрибути (Лева / Десна страна) ====
     54
     55||= Атрибут =||= Лева страна =||= Десна страна =||= Класификација =||
     56|| user_id || ✓ (FD1, FD5) || ✓ (FD2, FD3, FD4, FD11, FD12, FD13) || и лево и десно ||
     57|| username || ✓ (FD2) || ✓ (FD1) || и лево и десно ||
     58|| password || ✗ || ✓ (FD1) || само десно ||
     59|| email || ✓ (FD3) || ✓ (FD1) || и лево и десно ||
     60|| role || ✗ || ✓ (FD1) || само десно ||
     61|| auth_provider || ✗ || ✗ || '''само лево''' ||
     62|| portfolio_id || ✓ (FD4) || ✓ (FD5, FD8, FD10) || и лево и десно ||
     63|| balance || ✗ || ✓ (FD4) || само десно ||
     64|| holding_id || ✓ (FD8) || ✗ || '''само лево''' ||
     65|| holding_quantity || ✗ || ✓ (FD8) || само десно ||
     66|| avg_price || ✗ || ✓ (FD8) || само десно ||
     67|| stock_id || ✓ (FD6) || ✓ (FD7, FD8, FD9, FD11, FD12) || и лево и десно ||
     68|| stock_symbol || ✓ (FD7) || ✓ (FD6) || и лево и десно ||
     69|| stock_name || ✗ || ✓ (FD6) || само десно ||
     70|| current_price || ✗ || ✓ (FD6) || само десно ||
     71|| last_price || ✗ || ✓ (FD6) || само десно ||
     72|| percentage || ✗ || ✓ (FD6) || само десно ||
     73|| turnover || ✗ || ✓ (FD6) || само десно ||
     74|| last_updated || ✗ || ✓ (FD6) || само десно ||
     75|| history_id || ✓ (FD9) || ✗ || '''само лево''' ||
     76|| history_price || ✗ || ✓ (FD9) || само десно ||
     77|| history_timestamp || ✗ || ✓ (FD9) || само десно ||
     78|| trade_id || ✓ (FD10) || ✗ || '''само лево''' ||
     79|| trade_type || ✗ || ✓ (FD10) || само десно ||
     80|| trade_status || ✗ || ✓ (FD10) || само десно ||
     81|| trade_quantity || ✗ || ✓ (FD10) || само десно ||
     82|| price_per_unit || ✗ || ✓ (FD10) || само десно ||
     83|| trade_timestamp || ✗ || ✓ (FD10) || само десно ||
     84|| trade_stock_symbol || ✗ || ✓ (FD10) || само десно ||
     85|| transaction_id || ✓ (FD11) || ✗ || '''само лево''' ||
     86|| txn_type || ✗ || ✓ (FD11) || само десно ||
     87|| txn_quantity || ✗ || ✓ (FD11) || само десно ||
     88|| txn_price || ✗ || ✓ (FD11) || само десно ||
     89|| txn_timestamp || ✗ || ✓ (FD11) || само десно ||
     90|| txn_origin || ✗ || ✓ (FD11) || само десно ||
     91|| watchlist_id || ✓ (FD12) || ✗ || '''само лево''' ||
     92|| price_above || ✗ || ✓ (FD12) || само десно ||
     93|| price_below || ✗ || ✓ (FD12) || само десно ||
     94|| oauth_token || ✓ (FD13) || ✗ || '''само лево''' ||
     95|| oauth_email || ✗ || ✓ (FD13) || само десно ||
     96|| oauth_provider || ✗ || ✓ (FD13) || само десно ||
     97|| oauth_expires_at || ✗ || ✓ (FD13) || само десно ||
     98|| oauth_created_at || ✗ || ✓ (FD13) || само десно ||
     99
     100==== Атрибути кои се појавуваат САМО на лева страна ====
     101
     102Овие атрибути мора да бидат дел од секој кандидат клуч, бидејќи не можат да се изведат од ниедна FD:
     103
     104 * '''holding_id''' - мора да биде дел од секој кандидат клуч
     105 * '''history_id''' - мора да биде дел од секој кандидат клуч
     106 * '''trade_id''' - мора да биде дел од секој кандидат клуч
     107 * '''transaction_id''' - мора да биде дел од секој кандидат клуч
     108 * '''watchlist_id''' - мора да биде дел од секој кандидат клуч
     109 * '''oauth_token''' - мора да биде дел од секој кандидат клуч
     110 * '''auth_provider''' - мора да биде дел од секој кандидат клуч (не учествува во ниедна FD; изводливо само преку себе)
     111
     112==== Пресметка на затворач ====
     113