Skip to content

Database Schema

vh71886 edited this page Jun 20, 2022 · 7 revisions

users

column data type properties
id integer null: false
username string null: false, index, unique
email string null: false, index, unique
password_digest string null: false
session_token string null: false, index, unique
created_at datetime null: false
updated_at datetime null: false
  • index on username, email, and session_token
  • foreign key: has_many reservations
  • foreign key: has_many reviews
  • foreign key: has_many favorites

hotels

column data type properties
id integer null: false
name string null: false, index, unique
email string null: false, index, unique
phone_number string null: false, unique
country string null: false, index
city string null: false, index
address string null: false
rooms integer null: false
created_at datetime null: false
updated_at datetime null: false
  • index on name, email, country, and city
  • foreign key: has_many reservations
  • foreign key: has_many reviews
  • foreign key: has_many favorites

reservations

column data type properties
id integer null: false
hotel_id integer null: false, index
customer_id integer null: false, index
checkin datetime null: false, index
checkout datetime null: false, index
room_id integer index
created_at datetime null: false
updated_at datetime null: false
  • index on hotel_id, customer_id, checkin, checkout, and room_id
  • hotel_id references hotels
  • customer_id references users
  • belongs_to hotel
  • belongs_to customer

reviews

column data type properties
id integer null: false
hotel_reviewed_id integer null: false, index
reviewer_id integer null: false, index
rating integer null: false
title string null: false
body text null: false
created_at datetime null: false
updated_at datetime null: false
  • index on hotel_reviewed_id and reviewer_id
  • hotel_reviewed_id references hotels
  • reviewer_id references users
  • belongs_to hotel
  • belongs_to reviewer

favorites

column data type properties
id integer null: false
favorited_id integer null: false, index
favoriter_id integer null: false, index
created_at datetime null: false
updated_at datetime null: false
  • index on favorited_id and favoriter_id
  • favorited_id references hotels
  • favoriter_id references users
  • belongs_to favorited
  • belongs_to favoriter

Clone this wiki locally