-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
157 lines (144 loc) · 5.49 KB
/
Copy pathschema.sql
File metadata and controls
157 lines (144 loc) · 5.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
-- CREATE DATABASE IF NOT EXISTS bytebank;
-- USE bytebank;
-- 1. Users Table
CREATE TABLE IF NOT EXISTS users (
system_id VARCHAR(50) PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
password_hash VARCHAR(255) NOT NULL,
role VARCHAR(20) NOT NULL, -- ADM, MGR, CUS
email VARCHAR(150) UNIQUE NOT NULL,
phone VARCHAR(20) NOT NULL,
status VARCHAR(20) DEFAULT 'ACTIVE', -- ACTIVE, LOCKED, INACTIVE
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 2. Accounts Table
CREATE TABLE IF NOT EXISTS accounts (
account_no VARCHAR(20) PRIMARY KEY,
system_id VARCHAR(50) NOT NULL,
type VARCHAR(20) NOT NULL, -- SAVINGS, CURRENT, FIXED_DEPOSIT
balance DECIMAL(15, 2) DEFAULT 0.00,
ifsc VARCHAR(20) NOT NULL,
status VARCHAR(20) DEFAULT 'ACTIVE', -- ACTIVE, FROZEN, CLOSED
opened_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
interest_rate DECIMAL(5, 2) DEFAULT 0.00,
FOREIGN KEY (system_id) REFERENCES users(system_id) ON DELETE CASCADE
);
-- 3. Transactions Table
CREATE TABLE IF NOT EXISTS transactions (
txn_id VARCHAR(50) PRIMARY KEY,
from_acc VARCHAR(20),
to_acc VARCHAR(20),
amount DECIMAL(15, 2) NOT NULL,
type VARCHAR(20) NOT NULL, -- TRANSFER, DEPOSIT, WITHDRAWAL, BILL_PAY, LOAN_DISBURSEMENT, EMI_DEBIT
status VARCHAR(20) DEFAULT 'PENDING', -- PENDING, SUCCESS, FAILED
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
gateway_ref VARCHAR(100),
FOREIGN KEY (from_acc) REFERENCES accounts(account_no) ON DELETE SET NULL,
FOREIGN KEY (to_acc) REFERENCES accounts(account_no) ON DELETE SET NULL
);
-- 4. Beneficiaries Table
CREATE TABLE IF NOT EXISTS beneficiaries (
ben_id BIGINT AUTO_INCREMENT PRIMARY KEY,
owner_id VARCHAR(50) NOT NULL,
acc_no VARCHAR(20) NOT NULL,
ifsc VARCHAR(20) NOT NULL,
nick_name VARCHAR(100) NOT NULL,
status VARCHAR(20) DEFAULT 'PENDING', -- PENDING, APPROVED, BLOCKED
approved_at TIMESTAMP NULL,
FOREIGN KEY (owner_id) REFERENCES users(system_id) ON DELETE CASCADE
);
-- 5. Loans Table
CREATE TABLE IF NOT EXISTS loans (
loan_id VARCHAR(50) PRIMARY KEY,
system_id VARCHAR(50) NOT NULL,
type VARCHAR(30) NOT NULL, -- PERSONAL, HOME, EDUCATION
amount DECIMAL(15, 2) NOT NULL,
tenure INT NOT NULL, -- in months
rate DECIMAL(5, 2) NOT NULL,
status VARCHAR(30) DEFAULT 'APPLIED', -- APPLIED, UNDER_REVIEW, APPROVED, REJECTED, ACTIVE, CLOSED
emi DECIMAL(15, 2) NOT NULL,
disbursed_at TIMESTAMP NULL,
FOREIGN KEY (system_id) REFERENCES users(system_id) ON DELETE CASCADE
);
-- 6. EMI Schedule Table
CREATE TABLE IF NOT EXISTS emi_schedule (
emi_id BIGINT AUTO_INCREMENT PRIMARY KEY,
loan_id VARCHAR(50) NOT NULL,
due_date DATE NOT NULL,
amount DECIMAL(15, 2) NOT NULL,
paid BOOLEAN DEFAULT FALSE,
paid_at TIMESTAMP NULL,
balance_after DECIMAL(15, 2),
FOREIGN KEY (loan_id) REFERENCES loans(loan_id) ON DELETE CASCADE
);
-- 7. Payments Table
CREATE TABLE IF NOT EXISTS payments (
pay_id VARCHAR(50) PRIMARY KEY,
system_id VARCHAR(50) NOT NULL,
amount DECIMAL(15, 2) NOT NULL,
gateway VARCHAR(50) NOT NULL, -- RAZORPAY, STRIPE
order_id VARCHAR(100),
payment_id VARCHAR(100),
status VARCHAR(20) DEFAULT 'PENDING',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (system_id) REFERENCES users(system_id) ON DELETE CASCADE
);
-- 8. Fixed Deposits Table
CREATE TABLE IF NOT EXISTS fixed_deposits (
fd_id VARCHAR(50) PRIMARY KEY,
account_no VARCHAR(20) NOT NULL,
principal DECIMAL(15, 2) NOT NULL,
rate DECIMAL(5, 2) NOT NULL,
tenure INT NOT NULL, -- in months
maturity_date DATE NOT NULL,
status VARCHAR(20) DEFAULT 'ACTIVE', -- ACTIVE, MATURED, LIQUIDATED
FOREIGN KEY (account_no) REFERENCES accounts(account_no) ON DELETE CASCADE
);
-- 9. OTP Log Table
CREATE TABLE IF NOT EXISTS otp_log (
otp_id BIGINT AUTO_INCREMENT PRIMARY KEY,
system_id VARCHAR(50) NOT NULL,
otp_hash VARCHAR(255) NOT NULL,
purpose VARCHAR(50) NOT NULL, -- LOGIN, PASSWORD_RESET, TRANSACTION_CONFIRM
expires_at TIMESTAMP NOT NULL,
used BOOLEAN DEFAULT FALSE,
FOREIGN KEY (system_id) REFERENCES users(system_id) ON DELETE CASCADE
);
-- 10. Audit Log Table
CREATE TABLE IF NOT EXISTS audit_log (
log_id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id VARCHAR(50),
action VARCHAR(255) NOT NULL,
entity VARCHAR(100),
entity_id VARCHAR(100),
ip_address VARCHAR(45),
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(system_id) ON DELETE SET NULL
);
-- 11. Configuration Table
CREATE TABLE IF NOT EXISTS config (
config_key VARCHAR(100) PRIMARY KEY,
config_value VARCHAR(255) NOT NULL,
updated_by VARCHAR(50),
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (updated_by) REFERENCES users(system_id) ON DELETE SET NULL
);
-- 12. Notifications Table
CREATE TABLE IF NOT EXISTS notifications (
notif_id BIGINT AUTO_INCREMENT PRIMARY KEY,
system_id VARCHAR(50) NOT NULL,
message TEXT NOT NULL,
type VARCHAR(50) DEFAULT 'INFO',
is_read BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (system_id) REFERENCES users(system_id) ON DELETE CASCADE
);
-- 13. Daily Stats Reporting Table
CREATE TABLE IF NOT EXISTS daily_stats (
stat_date DATE PRIMARY KEY,
total_transactions INT DEFAULT 0,
total_volume DECIMAL(15, 2) DEFAULT 0.00,
total_loans INT DEFAULT 0,
audit_count INT DEFAULT 0
);