Skip to content
irynamcb edited this page Mar 3, 2020 · 16 revisions

Database Schema

users

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

posts

column name data type details
id integer not null, primary key
author_id integer not null, indexed, foreign key
body text not null
created_at datetime not null
parent_id integer not null, indexed, foreign key
  • parent_id is the user_id of the wall the post is on
  • author_id references users
  • parent_id references users

comments

column name data type details
id integer not null, primary key
author_id integer not null, indexed, foreign key
body text not null
created_at datetime not null
post_id integer not null, indexed, foreign key
  • author_id references users
  • post_id references posts

likes

column name data type details
id integer not null, primary key
author_id integer not null, indexed, foreign key
likeable_id integer not null, indexed, foreign key
likeable_type string not null
created_at datetime not null
  • polymorphic associations, author_id - a person who create a like
  • author_id references users
  • references :likeable, polymorphic: true

friendships

column name data type details
id integer not null, primary key
user_id integer not null, indexed, foreign key
friend_id integer not null, indexed, foreign key
  • user_id references users
  • friend_id references users

friend_requests

column name data type details
id integer not null, primary key
user_id integer not null, indexed, foreign key
friend_id integer not null, indexed, foreign key
  • user_id references users
  • friend_id references users

Clone this wiki locally