source: db-scripts/ddl.sql@ 8449b9c

Last change on this file since 8449b9c was 708af9e, checked in by Andrej <asumanovski@…>, 2 months ago

Weight tracking feature complete

  • Property mode set to 100644
File size: 4.0 KB
Line 
1DROP SCHEMA IF EXISTS trekr CASCADE;
2
3CREATE SCHEMA trekr;
4
5SET search_path TO trekr;
6DROP TABLE IF EXISTS TASK_DAILY_COMPLETION;
7DROP TABLE IF EXISTS DAILY_COMPLETION;
8DROP TABLE IF EXISTS TASKS;
9DROP TABLE IF EXISTS CUSTOM_TRACKING_CATEGORIES;
10DROP TABLE IF EXISTS ASSETS;
11DROP TABLE IF EXISTS INVESTOR_USERS;
12DROP TABLE IF EXISTS DAILY_INTAKES;
13DROP TABLE IF EXISTS WEIGHT_USERS;
14DROP TABLE IF EXISTS TRAINING_SESSIONS;
15DROP TABLE IF EXISTS TRAINING_USERS;
16DROP TABLE IF EXISTS INCOMES;
17DROP TABLE IF EXISTS FINANCE_USERS;
18DROP TABLE IF EXISTS DISCIPLINE_USERS;
19DROP TABLE IF EXISTS USERS;
20
21CREATE TABLE USERS (
22 user_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
23 email TEXT NOT NULL UNIQUE,
24 username TEXT NOT NULL UNIQUE,
25 password TEXT NOT NULL
26);
27
28CREATE TABLE FINANCE_USERS (
29 user_id BIGINT PRIMARY KEY
30 REFERENCES USERS(user_id) ON DELETE CASCADE,
31 spending_budget NUMERIC,
32 saving_budget NUMERIC,
33 investing_budget NUMERIC,
34 donation_budget NUMERIC,
35 credit NUMERIC
36);
37
38CREATE TABLE INCOMES (
39 income_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
40 user_id BIGINT
41 REFERENCES FINANCE_USERS(user_id) ON DELETE CASCADE,
42 date DATE NOT NULL,
43 amount NUMERIC NOT NULL
44);
45
46CREATE TABLE TRAINING_USERS (
47 user_id BIGINT PRIMARY KEY
48 REFERENCES USERS(user_id) ON DELETE CASCADE,
49 gender TEXT,
50 age INTEGER,
51 weight NUMERIC
52);
53
54CREATE TABLE WEIGHT_USERS (
55 user_id BIGINT PRIMARY KEY
56 REFERENCES USERS(user_id) ON DELETE CASCADE,
57 weight NUMERIC NOT NULL,
58 height NUMERIC NOT NULL,
59 goal_weight NUMERIC NOT NULL,
60 goal_calories NUMERIC NOT NULL
61);
62
63CREATE TABLE DAILY_INTAKES (
64 daily_intake_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
65 user_id BIGINT
66 REFERENCES WEIGHT_USERS(user_id) ON DELETE CASCADE,
67 calories NUMERIC NOT NULL,
68 date DATE NOT NULL,
69
70 CONSTRAINT daily_intakes_unique_user_date UNIQUE (user_id, date)
71);
72
73CREATE TABLE TRAINING_SESSIONS (
74 training_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
75 training_user_id BIGINT
76 REFERENCES TRAINING_USERS(user_id) ON DELETE CASCADE,
77 duration NUMERIC,
78 calories NUMERIC,
79 date DATE,
80 type TEXT
81);
82
83CREATE TABLE DISCIPLINE_USERS (
84 user_id BIGINT PRIMARY KEY
85 REFERENCES USERS(user_id) ON DELETE CASCADE
86);
87
88CREATE TABLE CUSTOM_TRACKING_CATEGORIES (
89 custom_tracking_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
90 user_id BIGINT
91 REFERENCES USERS(user_id) ON DELETE CASCADE,
92 name TEXT NOT NULL
93);
94
95CREATE TABLE TASKS (
96 task_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
97 name TEXT NOT NULL,
98 is_finished BOOLEAN NOT NULL DEFAULT FALSE,
99
100 discipline_user_id BIGINT
101 REFERENCES DISCIPLINE_USERS(user_id) ON DELETE CASCADE,
102
103 custom_tracking_id BIGINT
104 REFERENCES CUSTOM_TRACKING_CATEGORIES(custom_tracking_id)
105 ON DELETE CASCADE,
106
107 CONSTRAINT task_belongs_to_exactly_one_category
108 CHECK (
109 (discipline_user_id IS NOT NULL AND custom_tracking_id IS NULL)
110 OR
111 (discipline_user_id IS NULL AND custom_tracking_id IS NOT NULL)
112 )
113);
114
115CREATE TABLE DAILY_COMPLETION (
116 daily_completion_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
117 user_id BIGINT
118 REFERENCES USERS(user_id) ON DELETE CASCADE,
119 date DATE,
120 procent NUMERIC
121);
122
123CREATE TABLE TASK_DAILY_COMPLETION (
124 task_id BIGINT
125 REFERENCES TASKS(task_id) ON DELETE CASCADE,
126 daily_completion_id BIGINT
127 REFERENCES DAILY_COMPLETION(daily_completion_id) ON DELETE CASCADE,
128
129 CONSTRAINT task_daily_completion_pk
130 PRIMARY KEY (task_id, daily_completion_id)
131);
132
133CREATE TABLE INVESTOR_USERS (
134 user_id BIGINT PRIMARY KEY
135 REFERENCES USERS(user_id) ON DELETE CASCADE
136);
137
138CREATE TABLE ASSETS (
139 asset_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
140 user_id BIGINT
141 REFERENCES INVESTOR_USERS(user_id) ON DELETE CASCADE,
142 ticker_symbol TEXT NOT NULL,
143 buy_price NUMERIC,
144 buy_date DATE,
145 quantity NUMERIC
146);
Note: See TracBrowser for help on using the repository browser.