-
Notifications
You must be signed in to change notification settings - Fork 0
Schema
Zalkifl Syed edited this page Jan 30, 2019
·
14 revisions
| column name | data type | details |
|---|---|---|
id |
integer | not null, primary_key
|
username |
string | not null, unique, indexed |
email |
string | not null, unique, indexed |
password_digest |
string | not null |
session_token |
string | not null |
- index on
[username], unique: true - index on
[email], unique: true -
has_manyfriends, tabs, groups, comments.
| column name | data type | details |
|---|---|---|
id |
integer | not null, primary_key
|
name |
string | not null |
restaurant_id |
integer |
foreign_key, allow null, indexed |
settled |
boolean | default: false |
total |
integer | not null |
group_id |
integer |
foreign_key, not null, indexed |
lender_id |
integer |
foreign_key, not null, indexed |
-
group_idreferencesgroup - can be null if only splitting with one other person.
-
lender_idreferencesuser, a user who paid the bill. -
restaurant_idreferencesrestaurant - index on
[group_id] - index on
[restaurant_id] - index on
[lender_id]
| column name | data type | details |
|---|---|---|
id |
integer | not null, primary_key
|
name |
string | not null, indexed |
address |
string | not null |
longitude |
string | not null, indexed |
latitude |
string | not null, indexed |
- be able to map location, to keep track where each split occurred.
- index on
[name] - index on
[longitude, latitude]
| column name | data type | details |
|---|---|---|
id |
integer | not null, primary_key
|
friend_id |
integer | not null, indexed |
user_id |
integer | not null, indexed |
accepted |
boolean | default: false |
-
friend_idreferencesuser -
user_idreferencesuser, who carries the friend list - index on
[friend_id] - index on
[user_id] - index on
[user_id, friend_id], unique: true
| column name | data type | details |
|---|---|---|
id |
integer | not null, primary_key
|
tab_id |
string | not null, indexed |
comment |
body | not null |
commenter_id |
integer |
foreign_key, allow null, indexed |
-
commenter_idcommentator referencesuser -
tab_idreferencestab - index on
[tab_id] - index on
[commenter_id]
| column name | data type | details |
|---|---|---|
id |
integer | not null, primary_key
|
group_name |
string | not null, indexed |
- index on
[group_name]
| column name | data type | details |
|---|---|---|
id |
integer | not null, primary_key
|
tab_id |
integer |
foreign_key, not null, indexed |
user_id |
integer |
foreign_key, not null, indexed |
amount_owed |
integer | allow null |
paid |
boolean | default: false |
- a joins table, to store information about a check/split all in one place.
- easy access, to delete or remove properties from a user.
-
tab_idreferencestab -
user_idreferencesuser - index on
[tab_id] - index on
[user_id]
| column name | data type | details |
|---|---|---|
id |
integer | not null, primary_key
|
group_id |
integer |
foreign_key, not null, indexed |
user_id |
integer |
foreign_key, not null, indexed |
-
group_idreferencesgroup -
user_idreferencesuser - index on
[group_id] - index on
[user_id] - index on
[:user_id, :group_id], unique: true