-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmod_dbtables.sql
79 lines (70 loc) · 2.06 KB
/
mod_dbtables.sql
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
-- User table
CREATE TABLE user (
userID VARCHAR(50) PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
password VARCHAR(100)
);
-- User emails
CREATE TABLE user_email (
userID VARCHAR(50),
email VARCHAR(100),
PRIMARY KEY (userID, email),
FOREIGN KEY (userID) REFERENCES User(userID)
);
-- User phone numbers
CREATE TABLE user_phone_no (
userID VARCHAR(50),
phone_no VARCHAR(20),
PRIMARY KEY (userID, phone_no),
FOREIGN KEY (userID) REFERENCES User(userID)
);
-- Wallets table
CREATE TABLE wallets (
wallet_id INT PRIMARY KEY AUTO_INCREMENT,
userID VARCHAR(50),
organization_name VARCHAR(100),
category VARCHAR(50),
amount DECIMAL(10, 2),
FOREIGN KEY (userID) REFERENCES User(userID)
);
-- wallets transfers (recursive relation)
CREATE TABLE wallet_transfer (
source_wallet_id INT,
destination_wallet_id INT,
-- transfer_amount DECIMAL(10, 2),
PRIMARY KEY (source_wallet_id, destination_wallet_id),
FOREIGN KEY (source_wallet_id) REFERENCES wallets(wallet_id),
FOREIGN KEY (destination_wallet_id) REFERENCES wallets(wallet_id)
);
-- Payments table
CREATE TABLE payments (
payment_id INT PRIMARY KEY AUTO_INCREMENT,
wallet_id INT,
category VARCHAR(50),
payment_status VARCHAR(20),
tag VARCHAR(50),
payment_amount DECIMAL(10, 2),
FOREIGN KEY (wallet_id) REFERENCES wallets(wallet_id)
);
-- Recurring monthly expenses table
CREATE TABLE recurring_monthly_expenses (
subscription_id INT PRIMARY KEY AUTO_INCREMENT,
wallet_id INT,
payment_status VARCHAR(20),
monthly_payment DECIMAL(10, 2),
descriptions VARCHAR(100),
shared_percentage DECIMAL(5, 2),
media_company VARCHAR(100),
expense_type BOOLEAN,
next_payment_date DATE,
FOREIGN KEY (wallet_id) REFERENCES wallets(wallet_id)
);
-- Monthly budget plan (weak entity)
CREATE TABLE monthly_budget_plan (
userID VARCHAR(50),
category VARCHAR(50),
categorical_upper_bound VARCHAR(10),
PRIMARY KEY (userID, category),
FOREIGN KEY (userID) REFERENCES User(userID)
);