Spaces:
Build error
Build error
BankBot AI β Entity Relationship Diagram
ER Diagram (Text Notation)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USERS β
β PK id VARCHAR UUID β
β email VARCHAR UNIQUE NOT NULL β
β password_hash VARCHAR NOT NULL (bcrypt, rounds=12) β
β profile_data JSON {name, phone, avatar, plan} β
β financial_personality VARCHAR (Saver/Investor/Balanced/...) β
β ai_personalization_settings JSON β
β created_at TIMESTAMP β
β updated_at TIMESTAMP β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β 1
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββ
β N β N β N
βββββββββββΌβββββββββββ ββββββββΌβββββββββββββββ ββββββββββββΌβββββββββββ
β ACCOUNTS β β SUBSCRIPTIONS β β GOALS β
β PK id UUID β β PK id UUID β β PK id UUID β
β FK user_id β β FK user_id β β FK user_id β
β type VARCHAR β β merchant VARCHAR β β title VARCHAR β
β (checking/ β β amount FLOAT β β target_amount β
β savings/ β β billing_cycle β β current_amount β
β investment) β β active BOOLEAN β β target_date β
β balance FLOAT β β ai_usage_ β β ai_generated_ β
β currency VARCHARβ β detection JSON β β plan JSON β
β status VARCHAR β ββββββββββββββββββββββ-ββ βββββββββββββββββββ-βββ
βββββββββββ¬ββββββββββββ
β 1
β N
βββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TRANSACTIONS β
β PK id VARCHAR UUID β
β FK account_id β ACCOUNTS.id β
β amount FLOAT NOT NULL β
β type VARCHAR (credit / debit) β
β category VARCHAR (Food/Shopping/Income/...) β
β merchant VARCHAR β
β timestamp TIMESTAMP β
β tags JSON [] β
β ai_generated_metadata JSON {} β
β spending_emotion_label VARCHAR (impulsive/planned/recurring) β
ββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β 1
β 0..1
ββββββββββββΌβββββββββββββββ
β FRAUD_LOGS β
β PK id UUID β
β FK transaction_id β
β risk_score FLOAT β
β (0.0 β 1.0) β
β suspicious_activity_ β
β details TEXT β
β status VARCHAR β
β (pending/resolved/ β
β false_positive) β
βββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INVESTMENTS β
β PK id VARCHAR UUID β
β FK user_id β USERS.id β
β asset_name VARCHAR (S&P 500, AAPL, BTC, ...) β
β type VARCHAR (stock/crypto/mutual_fund/bond) β
β amount_invested FLOAT β
β current_value FLOAT β
β portfolio_allocation FLOAT (percentage) β
β ai_risk_analysis JSON {risk, expected_return, rec} β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NOTIFICATIONS β
β PK id VARCHAR UUID β
β FK user_id β USERS.id β
β title VARCHAR NOT NULL β
β message TEXT NOT NULL β
β type VARCHAR (alert/insight/warning) β
β read_status BOOLEAN DEFAULT false β
β created_at TIMESTAMP β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI_INSIGHTS β
β PK id VARCHAR UUID β
β FK user_id β USERS.id β
β type VARCHAR (recommendation/briefing/cashflow) β
β content TEXT NOT NULL β
β created_at TIMESTAMP β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ANALYTICS_SNAPSHOTS β
β PK id VARCHAR UUID β
β FK user_id β USERS.id β
β date TIMESTAMP NOT NULL β
β total_balance FLOAT β
β total_spending FLOAT β
β total_savings FLOAT β
β financial_score FLOAT β
β trends_json JSON β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Relationships Summary
| From | To | Type | Description |
|---|---|---|---|
| USERS | ACCOUNTS | 1:N | User has multiple bank accounts |
| USERS | SUBSCRIPTIONS | 1:N | User has multiple subscriptions |
| USERS | GOALS | 1:N | User has multiple financial goals |
| USERS | INVESTMENTS | 1:N | User has multiple investments |
| USERS | NOTIFICATIONS | 1:N | User receives notifications |
| USERS | AI_INSIGHTS | 1:N | User has AI-generated insights |
| USERS | ANALYTICS_SNAPSHOTS | 1:N | Daily financial snapshots |
| ACCOUNTS | TRANSACTIONS | 1:N | Account has many transactions |
| TRANSACTIONS | FRAUD_LOGS | 1:0..1 | Transaction may have one fraud log |
Indexes (Performance)
-- Primary lookup patterns
CREATE INDEX idx_transactions_account_id ON transactions(account_id);
CREATE INDEX idx_transactions_timestamp ON transactions(timestamp DESC);
CREATE INDEX idx_transactions_category ON transactions(category);
CREATE INDEX idx_fraud_logs_transaction ON fraud_logs(transaction_id);
CREATE INDEX idx_notifications_user_read ON notifications(user_id, read_status);
CREATE INDEX idx_accounts_user_id ON accounts(user_id);
CREATE INDEX idx_goals_user_id ON goals(user_id);
CREATE INDEX idx_investments_user_id ON investments(user_id);