Skip to content
Evan-Leon edited this page May 5, 2021 · 4 revisions

Postgres Database Schema

users

column name data type details
id integer not null, primary key
email string not null, indexed, unique
first_name string not null, indexed
last_name string not null, indexed
birthdate date not null
password_digest string not null
session_token string not null, indexed, unique
created_at datetime not null
updated_at datetime not null
  • index on email, unique: true
  • index on session_token, unique: true

listings

column name data type details
id integer not null, primary key
title text not null, limit: 280
price integer not null
guests integer not null
description text not null
bedrooms integer not null
longitude float not null
latitude float not null
host_id integer not null, indexed, foreign key
created_at datetime not null
updated_at datetime not null
  • index on host_id
  • host_id references users

bookings

column name data type details
id integer not null, primary key
check_in date not null
check_out date not null
guest_id integer not null, indexed, foreign key
listing_id integer not null, indexed, foreign key
created_at datetime not null
updated_at datetime not null
  • index on guest_id
  • index on listing_id
  • index on dates
  • guest_id references users
  • listing_id references listings

reviews

column name data type details
id integer not null, primary key
body text not null, limit: 280
rating integer not null, limit: 5
guest_id integer not null, indexed, foreign key
listing_id integer not null, indexed, foreign key
booking_id integer not null, indexed, foreign key
created_at datetime not null
updated_at datetime not null
  • index on guest_id
  • index on listing_id
  • index on booking_id
  • guest_id references users
  • listing_id references listings
  • booking_id references bookings

Bonuses

saved_lists

column name data type details
id integer not null, primary key
list_title text not null, limit: 280
user_id integer not null, indexed, foreign key
listing_id integer not null, indexed, foreign key
created_at datetime not null
updated_at datetime not null
  • index on listing_id
  • listing_id references listings
  • index on user_id
  • user_id references users

saved_lists_joins

column name data type details
id integer not null
saved_list_id integer not null, indexed, foreign key
listing_id integer not null, indexed, foreign key
created_at datetime not null
updated_at datetime not null
  • index on saved_list_id
  • saved_list_id references saved_lists
  • index on listing_id
  • listing_id references listings

Clone this wiki locally