Database Schema - OByrnes/chatter-app GitHub Wiki

DB Schema

Users

column name datatype details
id integer primary key, not null
username string not null
email string not null, unique
hashed_password string not null
blob_id integer foreign key
  • index on email, unique: true
  • blob_id references Blobs table, nullable: true

Messages

column name datatype details
id integer primary key, not null
body text not null
user_id integer not null, foreign key
conversation_id integer not null, foreign key
created_at datetime not null
blob_id integer foreign key
  • user_id references Users table
  • conversation_id references Conversations table
  • blob_id references Blobs table, nullable: true

Conversations

column name datatype details
id integer primary key, not null
name string not null

UsersConversations

column name datatype details
id integer primary key, not null
user_id integer not null, foreign key
conversation_id integer not null, foreign key
  • user_id references Users table
  • conversation_id references Conversations table

Notifications

column name datatype details
id integer primary key, not null
user_id integer not null, foreign key
notifiable_id integer not null, foreign key
notifiable_type enum not null
  • user_id references Users table
  • notifiable_id and notifiable_type combination references Messages, Blocks, or Friends table

Friends

column name datatype details
id integer primary key, not null
user_id integer not null, foreign key
friend_id integer not null, foreign key
  • user_id references Users table
  • friend_id references Users table

Blocks

column name datatype details
id integer primary key, not null
user_id integer not null, foreign key
enemy_id integer not null, foreign key
  • user_id references Users table
  • enemy_id references Users table

Blobs

column name datatype details
id integer primary key, not null
body varbinary not null
file_extension string not null