E-R図・DB定義書
Qiita用ブラッシュアップ | 未着手 |
---|---|
ステータス | 完了 |
作成日時 | |
最終更新日時 |
E-R図

テーブル一覧
No. | テーブル名(論理) | テーブル名(物理) | 概要 | リレーションテーブルNo. |
---|---|---|---|---|
1 | ユーザー | users | ユーザーの情報を格納するテーブル | 2(収支), 4(固定費), 5(ジャンル), 6(貯金目標) |
2 | 収支 | transactions | 収支記録を格納するテーブル | 1(ユーザー), 3(写真), 5(ジャンル) |
3 | 写真 | item_photos | 支出の記録の際にアップロード可能な写真のパスを保持するテーブル | 2(収支) |
4 | 固定費 | fixed_costs | 固定費を格納するテーブル | 1(ユーザー), 5(ジャンル) |
5 | ジャンル | genres | ジャンルを格納するテーブル。ジャンルは全ユーザー共通の「デフォルトジャンル」とユーザー毎に追加が可能な「カスタムジャンル」の二種類を想定している。 「デフォルトジャンル」は user_id = null かつis_default =true 、「カスタムジャンル」はuser_id ≠ null かつis_default = false として管理し、収支及び固定費の分類に利用する。 | 1(ユーザー), 2(収支), 4(固定費) |
6 | 貯金目標 | saving_goals | 貯金目標を格納するテーブル | 1(ユーザー), 7(貯金進捗) |
7 | 貯金進捗 | saving_progresses | 貯金進捗を格納するテーブル | 6(貯金目標) |
テーブル詳細
凡例
記号 | 意味 |
---|---|
P | Primary Key(主キー) |
F | Foreign Key(外部キー) |
N | Null許可(〇=許可) |
No.1 users
No. | カラム名(論理) | カラム名(物理) | 型 | 文字数 | P | F | N | リレーション | フォーマット | 備考 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | id | BIGINT UNSIGNED | 〇 | - | ✕ | transactions() $this→hasMany(Transaction::class) fixed_costs() $this→hasMany(FixedCost::class) genres() $this→hasMany(Genre::class) saving_goals() $this→hasMany(SavingGoal::class) | - | ||
2 | 名前 | name | STRING | 50 | - | - | ✕ | - | - | |
3 | メール | STRING | 255 | - | - | ✕ | - | - | ||
4 | パスワード | password | STRING | 255 | - | - | ✕ | - | - | LaravelのHash::make() にてハッシュ化して保存 |
5 | 作成日 | created_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS | ||
6 | 更新日 | updated_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS |
No.2 transactions
No. | カラム名(論理) | カラム名(物理) | 型 | 文字数 | P | F | N | リレーション | フォーマット | 備考 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | id | BIGINT UNSIGNED | 〇 | - | ✕ | photo() $this→hasOne(Photo::class) | - | ||
2 | ユーザーid | user_id | BIGINT UNSIGNED | - | 〇 | ✕ | user() $this→belongsTo(User::class) | |||
3 | ジャンルid | genre_id | BIGINT UNSIGNED | 〇 | 〇 | ✕ | genre() $this→belongsTo(Genre::class) | |||
4 | タイプ | type | ENUM(”income”, “expense”) | - | - | ✕ | - | このカラムで収入であるのか支出であるのかを管理する | ||
5 | 金額 | amount | INT | - | - | ✕ | - | |||
6 | 日付 | date | DATE | - | - | ✕ | - | YYYY-MM-DD | ||
7 | メモ | memo | STRING | 255 | - | - | 〇 | - | ||
8 | 作成日 | created_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS | ||
9 | 更新日 | updated_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS |
No.3 photos
No. | カラム名(論理) | カラム名(物理) | 型 | 文字数 | P | F | N | リレーション | フォーマット | 備考 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | id | BIGINT UNSIGNED | 〇 | - | ✕ | - | |||
2 | 収支id | transaction_id | BIGINT UNSIGNED | - | 〇 | ✕ | transaction() $this→belongsTo(Transaction::class) | - | ||
3 | パス | image_path | STRING | 255 | - | - | ✕ | - | - | storage内の画像パスを格納/storage/photos/xxx.jpg |
4 | 作成日 | created_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS | ||
5 | 更新日 | updated_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS |
No.4 fixed_costs
No. | カラム名(論理) | カラム名(物理) | 型 | 文字数 | P | F | N | リレーション | フォーマット | 備考 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | id | BIGINT UNSIGNED | 〇 | - | ✕ | - | |||
2 | ユーザーid | user_id | BIGINT UNSIGNED | - | 〇 | ✕ | user() $this→belongsTo(User::class) | - | ||
3 | ジャンルid | genre_id | BIGINT UNSIGNED | - | 〇 | ✕ | genre() $this→belongsTo(Genre::class) | - | ||
4 | 固定費名 | name | STRING | 20 | - | - | ✕ | - | - | このカラムで収入であるのか支出であるのかを管理する |
5 | 金額 | amount | INT | - | - | ✕ | - | - | ||
6 | 支出日 | day_of_month | INT | - | - | ✕ | - | - | 何日に支出するのか Laravelのバッチ処理で使用する | |
7 | 支出頻度 | interval_months | INT | - | - | ✕ | - | 何か月に一回の頻度で支出するのか 例) 毎月: 1 隔月: 2 Laravelのバッチ処理で使用する | ||
8 | 開始日 | start_date | DATE | - | - | ✕ | YYYY-MM-DD | 固定費の記録の開始日はいつなのか Laravelのバッチ処理で使用する | ||
9 | 次回支出日 | next_occurence_date | DATE | - | - | ✕ | YYYY-MM-DD | 次回の固定費が記録される日はいつなのか Laravelのバッチ処理で使用する | ||
10 | 有効 | is_active | BOOL | - | - | ✕ | - | 固定費の記録を有効にするか否か 例)有効: true 無効: false | ||
11 | メモ | memo | STRING | 255 | - | - | 〇 | - | - | |
12 | 作成日 | created_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS | ||
13 | 更新日 | updated_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS |
No.5 genres
用語注釈
用語 | 意味 |
---|---|
デフォルトジャンル | 全ユーザー共通のジャンル |
カスタムジャンル | 各ユーザーで作成可能なジャンル |
No. | カラム名(論理) | カラム名(物理) | 型 | 文字数 | P | F | N | リレーション | フォーマット | 備考 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | id | BIGINT UNSIGNED | 〇 | - | ✕ | transactions() $this→hasMany(Transaction::class) fixed_costs() $this→hasMany(FixedCost::class) | - | ||
2 | ジャンル名 | name | STRING | 20 | - | - | ✕ | - | - | |
3 | ユーザーid | user_id | BIGINT UNSIGNED | - | 〇 | 〇 | user() $this→belongsTo(User::class) | - | user_id = nullの場合は「デフォルトジャンル」 user_id ≠ nullの場合は「カスタムジャンル」 | |
4 | デフォルト | is_default | BOOL | - | - | ✕ | - | - | デフォルトはfalse is_default = trueの場合は「デフォルトジャンル」 is_default ≠ falseの場合は「カスタムジャンル」 | |
5 | 作成日 | created_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS | ||
6 | 更新日 | updated_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS |
No.6 saving_goals
No. | カラム名(論理) | カラム名(物理) | 型 | 文字数 | P | F | N | リレーション | フォーマット | 備考 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | id | BIGINT UNSIGNED | 〇 | - | ✕ | saving_progresses() $this→hasMany(SavingProgress::class) | - | ||
2 | ユーザーid | user_id | BIGINT UNSIGNED | - | 〇 | ✕ | user() $this→belongsTo(User::class) | - | ||
3 | 貯金目標名 | name | STRING | 20 | - | - | ✕ | - | - | |
4 | 目標金額 | target_amount | INT | - | - | ✕ | - | - | ||
5 | 締切 | deadline | DATE | - | - | ✕ | - | YYYY-MM-DD | ||
6 | 月次引き落とし金額 | auto_monthly_amount | INT | - | - | ✕ | - | - | ||
7 | 開始月 | start_month | DATE | - | - | ✕ | - | YYYY-MM-01 | 自動貯金の開始対象月(例:2025-06-01) | |
8 | 有効 | is_active | BOOL | - | - | ✕ | - | - | ||
9 | 作成日 | created_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS | ||
10 | 更新日 | updated_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS |
No.7 saving_progresses
No. | カラム名(論理) | カラム名(物理) | 型 | 文字数 | P | F | N | リレーション | フォーマット | 備考 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | id | BIGINT UNSIGNED | 〇 | - | ✕ | - | |||
2 | 貯金目標id | saving_goal_id | BIGINT UNSIGNED | - | 〇 | ✕ | saving_goal() $this→belongsTo(SavingGoalr::class) | - | ||
3 | 金額 | amount | INT | - | - | ✕ | - | - | ||
4 | 日付 | date | DATE | - | - | ✕ | - | YYYY-MM-DD | ||
5 | メモ | memo | STRING | 255 | - | - | 〇 | - | - | |
6 | 作成日 | created_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS | ||
7 | 更新日 | updated_at | DATETIME | - | - | 〇 | - | YYYY-MM-DD HH:MM:SS |