Database Schema - griffinsharp/kicker GitHub Wiki
users
| Column Name | Data Type | Details |
|---|---|---|
id |
integer | not null, primary key |
username |
string | not null, indexed, unique |
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 |
-
index on
username, unique: true -
index on
email, unique: true -
index on
session_token, unique: true -
has_many
:projects(created a project) -
has_many
:backings(contributed to a project) -
has_many
:rewardsthrough:backings(reward from contributing to a project)
projects
| Column Name | Data Type | Details |
|---|---|---|
id |
integer | not null, primary key |
title |
string | not null, indexed, unique |
sub_title |
string | not null |
total_pledged |
integer | not null |
goal_amount |
integer | not null |
num_backers |
integer | not null |
days_left |
integer | not null |
loved |
boolean | |
location |
string | not null |
campaign |
text | not null |
about |
text | not null |
category_id |
integer | not null, indexed, foreign key |
user_id |
integer | not null, indexed, foreign key |
created_at |
datetime | not null |
updated_at |
datetime | not null |
-
index on
:title, unique: true -
index on
:category_id(refers to categories table) -
index on
:user_id(refers to users table) -
belongs_to
:user(creator) -
belongs_to
:category -
has_many
:backings -
has_many
:rewards -
has_many
:backers(users) throughbackings
backings
| Column Name | Data Type | Details |
|---|---|---|
id |
integer | not null, primary key |
user_id |
integer | not null, indexed, foreign key |
reward_id |
integer | not null, indexed, foreign key |
project_id |
integer | not null, indexed, foreign key |
created_at |
datetime | not null |
updated_at |
datetime | not null |
-
index on
user_id(refers to users table) -
index on
reward_id(refers to rewards table) -
index on
project_id(refers to projects table) -
indexed on
[user_id, reward_id], unique: true(one reward linked to user that backed a project) -
belongs_to
:user(backer) -
belongs_to
:reward -
has_one
:projectthrough:reward(project_id in rewards)
categories
| Column Name | Data Type | Details |
|---|---|---|
id |
integer | not null, primary key |
category_name |
string | not null, indexed |
-
index on
category_name(refers to categories table) -
has_many
:projects
rewards
| Column Name | Data Type | Details |
|---|---|---|
id |
integer | not null, primary key |
amount |
integer | not null |
desc |
text | not null |
subdesc |
text | |
delivery |
string | not null |
shipping |
string | |
num_backers |
integer | not null |
project_id |
integer | not null, indexed, foreign key |
created_at |
datetime | not null |
updated_at |
datetime | not null |
-
index on
project_id(refers to projects table) -
belongs_to
:project