Schema - Gregory-DelCarlo/UnBlended GitHub Wiki

Data Tables

Users

column name data type details
id integer not null, primary key
username string not null, unique, indexed
password_digest string not null, indexed
location string
  • Users will also have a photo held by active storage

Whiskey

column name data type details
id integer not null, primary key
name string not null, unique, indexed
type string not null
ABV float not null
proof integer not null
description text
distillery_id integer not null, foreign key, indexed
  • Drinks will have many photos held by active storage
  • Drinks will have many Reviews

Distilleries

column name data type details
id integer not null, primary key
name string not null
lat float not null, unique
long float not null, unique
description text
  • Distilleries will have many Drinks

Reviews

column name data type details
id integer not null, primary key, indexed
rating float not null
body text not null
pour string not null, only certain types
location string
whiskey_id integer not null, foreign key
user_id integer not null, foreign key
  • Reviews will have many Comments and Cheers

Comments

column name data type details
id integer not null, primary key
body text not null
review_id integer not null
user_id integer not null

Whiskey_List

column name data type details
id integer not null, primary key
name string not null
user_id integer not null, foreign key
  • User lists need to be unique so we need to add a unique index on [name, user_id]

Join Tables

Cheers

column name data type details
id integer not null, primary key
user_id integer not null, foreign key
review_id integer not null, foreign key
  • Cheers act as likes to a comment so it will join a user to a review

Liked_Whiskeys

column name data type details
id integer not null, primary key
drink_id integer not null, foreign key
list_id integer not null, foreign key
  • Users can add whiskeys to their lists so this table joins whiskeys to a list
  • A drink can only be added to each list once so we need a unique index on [drink_id, list_id]