= Верзија 3 == ER дијаграм [[Image(ERDiagramVer3.png)]] == Податочни побарувања === Ентитети 1. **User** - ентитет за корисникот кој се логира - user_id - SERIAL (примарен клуч) - user_name - VARCHAR(30) (атрибут) - email - VARCHAR(30) (атрибут) - password - VARCHAR(30) (атрибут) 2. **Transaction Account** - секој корисник има една или повеќе трансакциски акаунти/сметки(кредитна картичка, дебитна картичка, кеш, девизи...) - transaction_account_id - SERIAL (примарен клуч) - user_id - INT (надворешен клуч) - account_name - VARCHAR(35) (атрибут) - balance - DECIMAL(10, 2) (атрибут) 3. **Transaction Breakdown** - за секоја трансакција(акција на плаќање/добивање пари) да можe да менува различни акаунти(сте платиле пола со картица, пола со кеш) и секоја трансакција да биде посложена(ако платите вие за повеќе луѓе, и очекувате да бидете отплатени од нив) потребен е ваков механизам во вид на ентитет кој ќе го овозможи тоа - transaction_breakdown_id - SERIAL (примарен клуч) - transaction_id - INT (надворешен клуч) - transaction_account_id - INT (надворешен клуч) - spent_amount - DECIMAL(10, 2) (атрибут) - earned_amount - DECIMAL(10, 2) (атрибут) 4. **Transaction** - трансакција, акција на трансфер на пари. Атрибутите amount и net_amount се потребни во случајот за сложени трансакции, кога пример вие плаќате на работа за јадењето на сите колеги во апликација за достава на храна и потоа колегите си го исплаќаат својот дел дали преку кеш директно вам или преку електронски трансфер со е-банкарство, вкупниот износ на целата нарачка кој го плаќате ќе се запише во amount, а додека со тригери ќе се ажурира net_amount со збир на сите вредности од атрибутите на помошните трансакции(earned_amount+spent_amount). Тие ќе бидат истата вредност доколку вие со трансакцијата го плаќате целиот износ за вас или пак добивате пари кои не треба да ги вратите - transaction_id - SERIAL (примарен клуч) - tag_id - INT (надворешен клуч) - transaction_name - VARCHAR(100) (атрибут) - date - TIMESTAMPZ (атрибут) - amount - DECIMAL(10, 2) (атрибут) - net_amount - DECIMAL(10, 2) (атрибут) 5. **Tag** - помошни групи(тагови) со кои може да се класифицираат трансакциите, а со тоа да се изведуваат корисни статистики - tag_id - SERIAL (примарен клуч) - tag_name - VARCHAR(50) (атрибут) == Релации - **!TransactionHasTransactionBreakdown** - 1:N една трансакција може да има повеќе помошни трансакции - **!TagAssignedToTransaction** - N:N повеќе тагови можат да се доделат на повеќе трансакции - **!TransactionBreakdownModifiesTransactionAccount** - 1:N една сметка може да биде менувана од повеќе помошни трансакции - **!UserHasTransactionAccount** - 1:N еден корисник може да има повеќе сметки == Историјат [wiki:ERModelVer1 Верзија 1] \\ [wiki:ERModelVer2 Верзија 2] \\ [wiki:ERModelVer3 Верзија 3]