Laravelで愛犬のお世話記録アプリを作るまで(3)【DB設計】

# はじめに
我が家の愛犬の世話は、家族で分担しています。
家族間で情報を共有し、愛犬の体調管理をスムーズにするために、散歩や餌の時間・量、排泄の回数などの記録（以下、お世話記録とする）を手軽に行えるアプリを作りたいと思います。

# バックナンバー
[(1)【構想】](https://qiita.com/ddrpg2ki/items/394888946e2bd6fbbdab)
[(2)【開発環境】](https://qiita.com/ddrpg2ki/items/c3bcf9d7f8482553f8c0)
(3)【DB設計】　＜　**今回はここ**

# DB設計
どんなテーブルのデータベースが必要なのか考えていきます。
最終的にはグループウェアのように、複数人で一匹のペットに関する記録を投稿できるようにしたいですが、処理が複雑になりそうなので、まずは一人で使う前提です。

## テーブル１：users

| カラム名  | 内容  | カラムタイプ  | 備考  |
|:---|:---|:---|:---|
| id | ユーザID | bigint(20) unsigned |  |
| name | ユーザ名 | varchar(255) |  |
| email | メールアドレス | varchar(255) |  |
| password | パスワード | varchar(255) |  |
| created_at | 作成日時 | timestamp |  |
| updated_at | 更新日時 | timestamp |  |

##  テーブル２：walks（さんぽ）

| カラム名  | 内容  | カラムタイプ  | 備考  |
|:---|:---|:---|:---|
| id | ID | bigint(20) unsigned |  |
| user_id | ユーザID | bigint(20) unsigned |  |
| recorded_on | お世話の実行時刻 | dateTime |  |
| time | 散歩した時間 | integer | 単位：分 |
| note | メモ | text |  |
| created_at | 作成日時 | timestamp |  |
| updated_at | 更新日時 | timestamp |  |

##  テーブル３：pees（おしっこ）

| カラム名  | 内容  | カラムタイプ  | 備考  |
|:---|:---|:---|:---|
| id | ID | bigint(20) unsigned |  |
| user_id | ユーザID | bigint(20) unsigned |  |
| recorded_on | お世話の実行時刻 | dateTime |  |
| amount | 量 | integer | 選択肢（少なめ/ふつう/多め） |
| color | 色 | integer | 選択肢（薄い黄色/黄色/濃い黄色/赤/その他） |
| odor | におい | integer | 選択肢（ふつう/くさい/異臭） |
| note | メモ | text |  |
| created_at | 作成日時 | timestamp |  |
| updated_at | 更新日時 | timestamp |  |

##  テーブル３：poops（うんち）

| カラム名  | 内容  | カラムタイプ  | 備考  |
|:---|:---|:---|:---|
| id | ID | bigint(20) unsigned |  |
| user_id | ユーザID | bigint(20) unsigned |  |
| recorded_on | お世話の実行時刻 | dateTime |  |
| amount | 量 | integer | 選択肢（少なめ/ふつう/多め） |
| color | 色 | integer | 選択肢（薄い茶色/茶色/濃い茶色/赤/その他） |
| odor | におい | integer | 選択肢（ふつう/くさい/異臭） |
| note | メモ | text |  |
| created_at | 作成日時 | timestamp |  |
| updated_at | 更新日時 | timestamp |  |

##  テーブル４：foods（ドッグフードのリスト）

| カラム名  | 内容  | カラムタイプ  | 備考  |
|:---|:---|:---|:---|
| id | ID | bigint(20) unsigned |  |
| name | ドッグフード名 | varchar(255) |  |
| maker | メーカー名 | varchar(255) |  |
| calorie_published | 基本カロリー | integer | 単位：kcal/100g |
| note | メモ | text |  |
| created_at | 作成日時 | timestamp |  |
| updated_at | 更新日時 | timestamp |  |

##  テーブル５：feeds（ごはん）

| カラム名  | 内容  | カラムタイプ  | 備考  |
|:---|:---|:---|:---|
| id | ID | bigint(20) unsigned |  |
| user_id | ユーザID | bigint(20) unsigned |  |
| recorded_on | お世話の実行時刻 | dateTime |  |
| food_name_1 | ドッグフード名１ | varchar(255) |  |
| amount_1 | 量１ | integer | 単位：g |
| food_name_2 | ドッグフード名２ | varchar(255) | ※ドッグフード切替時のブレンドに対応 |
| amount_2 | 量２ | integer | 単位：g |
| calorie | 摂取カロリー | integer | 単位：kcal、ドッグフード名と基本カロリー、量から計算 |
| note | メモ | text |  |
| created_at | 作成日時 | timestamp |  |
| updated_at | 更新日時 | timestamp |  |

##  テーブル６：cares（その他のお世話リスト）

| カラム名  | 内容  | カラムタイプ  | 備考  |
|:---|:---|:---|:---|
| id | ID | bigint(20) unsigned |  |
| name | お世話名 | varchar(255) |  |
| created_at | 作成日時 | timestamp |  |
| updated_at | 更新日時 | timestamp |  |

##  テーブル７：others（その他のお世話）

| カラム名  | 内容  | カラムタイプ  | 備考  |
|:---|:---|:---|:---|
| id | ID | bigint(20) unsigned |  |
| user_id | ユーザID | bigint(20) unsigned |  |
| care_name | お世話名 | varchar(255) |  |
| recorded_on | お世話の実行時刻 | dateTime |  |
| note | メモ | text |  |
| created_at | 作成日時 | timestamp |  |
| updated_at | 更新日時 | timestamp |  |

今回は以上です。