Skip to content

Database Schema

Tabia Ye edited this page May 17, 2024 · 36 revisions

Database Schema

image

Users

column name data type details
id integer not null, primary key
name string string(100), not null
email string string(50), not null, unique
password string string(255), not null
profile_image string string(1000), not null
created_at datetime not null
updated_at datetime not null

Friends

column name data type details
id integer not null, primary key
user_id integer not null, foreign key
friend_id integer not null, foreign key
created_at datetime not null
updated_at datetime not null
  • many-to-many join table between Users

Friends Expenses

column name data type details
id integer not null, primary key
payer_id integer not null, foreign key
receiver_id integer not null, foreign key
description string string(1000), not null
amount integer not null
expense_date date not null
settled boolean not null, default = False
notes string string(200)
created_at datetime not null
updated_at datetime not null
  • payer_id owes the money

Friends Expense Payments

column name data type details
id integer not null, primary key
user_id integer not null, foreign key
expense_id integer not null, foreign key
amount integer not null
payment_date date not null
created_at datetime not null
updated_at datetime not null

Comments

column name data type details
id integer not null, primary key
user_id integer not null, foreign key
friends_expense_id integer foreign key
group_expense_id integer foreign key
comment string not null, string(200)
created_at datetime not null
updated_at datetime not null

BONUS

image

Groups

column name data type details
id integer not null, primary key
creator_id integer not null, foreign key
name string string(100), not null
created_at datetime not null
updated_at datetime not null

Group Memberships

column name data type details
id integer not null, primary key
user_id integer not null, foreign key
group_id integer not null, foreign key
created_at datetime not null
updated_at datetime not null

Group Expenses

column name data type details
id integer not null, primary key
group_id integer not null, foreign key
description string string(200), not null
amount integer not null
settled boolean not null, default = False
expense_date date not null
notes string string(200)
created_at datetime not null
updated_at datetime not null

Group Expense Memberships

column name data type details
id integer not null, primary key
user_id integer not null, foreign key
group_expense_id integer not null, foreign key
is_receiving boolean not null, default = True
amount integer not null
created_at datetime not null
updated_at datetime not null

Group Expense Payments

column name data type details
id integer not null, primary key
user_id integer not null, foreign key
group_expense_id integer not null, foreign key
amount integer not null
payment_date date not null
created_at datetime not null
updated_at datetime not null
  • separate from Expense Payments due to potentially conflicting expense_ids

Clone this wiki locally