Податочни барања
Ентитети
User - ентитет кој чува информации за сите корисници на апликацијата (и обични корисници и администратори).
- id (bigint)
- username (text, not null)
- password (text, not null)
- email (text, not null)
- role (enum: USER, ADMIN)
Portfolio - ентитет кој чува информации за инвестициското портфолио на корисникот.
- id (bigint)
- balance (decimal, not null)
- user_id*
PortfolioHolding - ентитет кој чува информации за поединечни акции кои се дел од едно портфолио.
- id (bigint)
- quantity (int, not null)
- avg_price (decimal, not null)
- portfolio_id* (bigint)
- stock_id(bigint)
Stock – ентитет кој чува информации за акциите кои може да се тргуваат во системот.
- id (bigint)
- symbol (text, unique, not null)
- name (text)
- current_price (double)
- last_price (double)
- percentage (double)
- turnover (double)
- last_updated (timestamp)
StockHistory - ентитет кој чува историски податоци за цената на една акција.
- id (bigint)
- price (double)
- timestamp (date)
- stock_id (bigint)
TradeRequest - ентитет кој чува барања за купување или продавање акции, креирани од корисници и испратени на одобрување кај администратор.
- id (bigint)
- type (text: BUY / SELL)
- status (text: PENDING / APPROVED / DECLINED)
- quantity (int)
- price_per_unit (double)
- timestamp (timestamp)
- user_id (bigint)
- portfolio_id (bigint)
- stock_id (bigint)
Transaction - ентитет кој чува реализирани трансакции кои настануваат само по одобрување на trade request.
- id (bigint)
- type (text: BUY / SELL)
- quantity (int)
- price (double)
- timestamp (timestamp)
- origin (enum: INTERNAL, EXTERNAL)
- user_id* (bigint)
- stock_id* (bigint)
WatchlistEntry - ентитет кој чува информации за акции кои корисникот ги следи.
- id (bigint)
- price_above (double)
- price_below (double)
- user_id* (biging)
- stock_id* (bigint)
PendingLink - привремен ентитет кој се користи при поврзување на интерен кориснички профил со надворешен OAuth провајдер.
- token (text)
- email (text, not null)
- provider (enum: GOOGLE, INTERNAL)
- expires_at (timestamp)
- created_at (timestamp)
Релации
has (User ↔ Portfolio, 1:1) Секој корисник поседува точно едно портфолио, а секое портфолио припаѓа на еден корисник.
contains (Portfolio ↔ PortfolioHolding, 1:N) Едно портфолио може да содржи повеќе позиции (акции), додека секоја позиција припаѓа на едно портфолио.
represents (PortfolioHolding ↔ Stock, N:1) Секоја позиција во портфолиото претставува точно една акција.
has (Stock ↔ StockHistory, 1:N) Една акција може да има повеќе историски записи за цена.
makes (User ↔ Transaction, 1:N) Корисникот може да изврши повеќе трансакции.
refers to (Stock ↔ Transaction, 1:N) Една акција може да учествува во повеќе трансакции.
has (User ↔ WatchlistEntry, 1:N) Корисникот може да следи повеќе акции преку watchlist записи.
appears (WatchlistEntry ↔ Stock, N:1) Секој watchlist запис се однесува на една конкретна акција.
creates (User ↔ PendingLink, 1:1) Корисникот може да иницира поврзувањe со надворешни провајдери.
has (User ↔ AuthProvider, 1:N) Корисник може да биде интерен или екстерен.
makes (Portfolio ↔ TradeRequest, 1:N) Корисник праќа trade request преку своето портфолио.
Attachments (3)
- ER_TradingMK-min.png (151.8 KB ) - added by 5 days ago.
- ER_TradingMK-2-min.png (153.4 KB ) - added by 5 days ago.
- ER_TradingMK-3.drawio-min.png (153.2 KB ) - added by 3 days ago.
Download all attachments as: .zip

