wiki:erd


Податочни барања

Ентитети

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 преку своето портфолио.

Last modified 3 days ago Last modified on 12/26/25 02:16:21

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.