From 2d90d4e00a111ddf22440334d99323fe0d8216be Mon Sep 17 00:00:00 2001 From: René Neumann Date: Sat, 10 Feb 2024 18:46:39 +0100 Subject: First SQL setup --- sql/ddl/mysql.sql | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ sql/ddl/sqlite.sql | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 sql/ddl/mysql.sql create mode 100644 sql/ddl/sqlite.sql (limited to 'sql/ddl') diff --git a/sql/ddl/mysql.sql b/sql/ddl/mysql.sql new file mode 100644 index 0000000..47315f9 --- /dev/null +++ b/sql/ddl/mysql.sql @@ -0,0 +1,64 @@ +create table users +( + id INTEGER not null + primary key, + name VARCHAR(50) not null + unique, + pwd VARCHAR(255) not null, + description VARCHAR(100) +); + +create table categories +( + id INTEGER not null + primary key, + name VARCHAR(50) not null, + parent_id INTEGER + references categories, + user_id INTEGER not null + references users +); + +create table const_expenses +( + id INTEGER not null + primary key, + description VARCHAR(50), + expense NUMERIC(10, 2) not null, + months SMALLINT not null, + start DATE not null, + end DATE not null, + prev_id INTEGER + references const_expenses, + user_id INTEGER not null + references users, + category_id INTEGER not null + references categories +); + +create index idx_start_end + on const_expenses (user_id, start, end); + +create index ix_constexpense_end + on const_expenses (end); + +create index ix_constexpense_start + on const_expenses (start); + +create table single_expenses +( + id INTEGER not null + primary key, + description VARCHAR(50), + expense NUMERIC(10, 2) not null, + year INTEGER not null, + month SMALLINT not null, + day SMALLINT not null, + user_id INTEGER not null + references users, + category_id INTEGER not null + references categories +); + +create index idx_single_date + on single_expenses (user_id, year, month); diff --git a/sql/ddl/sqlite.sql b/sql/ddl/sqlite.sql new file mode 100644 index 0000000..47315f9 --- /dev/null +++ b/sql/ddl/sqlite.sql @@ -0,0 +1,64 @@ +create table users +( + id INTEGER not null + primary key, + name VARCHAR(50) not null + unique, + pwd VARCHAR(255) not null, + description VARCHAR(100) +); + +create table categories +( + id INTEGER not null + primary key, + name VARCHAR(50) not null, + parent_id INTEGER + references categories, + user_id INTEGER not null + references users +); + +create table const_expenses +( + id INTEGER not null + primary key, + description VARCHAR(50), + expense NUMERIC(10, 2) not null, + months SMALLINT not null, + start DATE not null, + end DATE not null, + prev_id INTEGER + references const_expenses, + user_id INTEGER not null + references users, + category_id INTEGER not null + references categories +); + +create index idx_start_end + on const_expenses (user_id, start, end); + +create index ix_constexpense_end + on const_expenses (end); + +create index ix_constexpense_start + on const_expenses (start); + +create table single_expenses +( + id INTEGER not null + primary key, + description VARCHAR(50), + expense NUMERIC(10, 2) not null, + year INTEGER not null, + month SMALLINT not null, + day SMALLINT not null, + user_id INTEGER not null + references users, + category_id INTEGER not null + references categories +); + +create index idx_single_date + on single_expenses (user_id, year, month); -- cgit v1.2.3-70-g09d2