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(貯金目標)

テーブル詳細


凡例

記号意味
PPrimary Key(主キー)
FForeign Key(外部キー)
NNull許可(〇=許可)

No.1 users

No.カラム名(論理)カラム名(物理)文字数PFNリレーションフォーマット備考
1ididBIGINT UNSIGNED-transactions()
$this→hasMany(Transaction::class)

fixed_costs()
$this→hasMany(FixedCost::class)

genres()
$this→hasMany(Genre::class)

saving_goals()
$this→hasMany(SavingGoal::class)
-
2名前nameSTRING50----
3メールemailSTRING255----
4パスワードpasswordSTRING255----LaravelのHash::make()にてハッシュ化して保存
5作成日created_atDATETIME---YYYY-MM-DD HH:MM:SS
6更新日updated_atDATETIME---YYYY-MM-DD HH:MM:SS

No.2 transactions

No.カラム名(論理)カラム名(物理)文字数PFNリレーションフォーマット備考
1ididBIGINT UNSIGNED-photo()
$this→hasOne(Photo::class)
-
2ユーザーiduser_idBIGINT UNSIGNED-user()
$this→belongsTo(User::class)
3ジャンルidgenre_idBIGINT UNSIGNEDgenre()

$this→belongsTo(Genre::class)
4タイプtypeENUM(”income”, “expense”)---このカラムで収入であるのか支出であるのかを管理する
5金額amountINT---
6日付dateDATE---YYYY-MM-DD
7メモmemoSTRING255---
8作成日created_atDATETIME---YYYY-MM-DD HH:MM:SS
9更新日updated_atDATETIME---YYYY-MM-DD HH:MM:SS

No.3 photos

No.カラム名(論理)カラム名(物理)文字数PFNリレーションフォーマット備考
1ididBIGINT UNSIGNED--
2収支idtransaction_idBIGINT UNSIGNED-transaction()
$this→belongsTo(Transaction::class)
-
3パスimage_pathSTRING255----storage内の画像パスを格納

/storage/photos/xxx.jpg
4作成日created_atDATETIME---YYYY-MM-DD HH:MM:SS
5更新日updated_atDATETIME---YYYY-MM-DD HH:MM:SS

No.4 fixed_costs

No.カラム名(論理)カラム名(物理)文字数PFNリレーションフォーマット備考
1ididBIGINT UNSIGNED--
2ユーザーiduser_idBIGINT UNSIGNED-user()
$this→belongsTo(User::class)
-
3ジャンルidgenre_idBIGINT UNSIGNED-genre()

$this→belongsTo(Genre::class)
-
4固定費名nameSTRING20----このカラムで収入であるのか支出であるのかを管理する
5金額amountINT----
6支出日day_of_monthINT----何日に支出するのか
Laravelのバッチ処理で使用する
7支出頻度interval_monthsINT---何か月に一回の頻度で支出するのか
例) 毎月: 1 隔月: 2
Laravelのバッチ処理で使用する
8開始日start_dateDATE--YYYY-MM-DD固定費の記録の開始日はいつなのか
Laravelのバッチ処理で使用する
9次回支出日next_occurence_dateDATE--YYYY-MM-DD次回の固定費が記録される日はいつなのか
Laravelのバッチ処理で使用する
10有効is_activeBOOL---固定費の記録を有効にするか否か
例)有効: true 無効: false
11メモmemoSTRING255----
12作成日created_atDATETIME---YYYY-MM-DD HH:MM:SS
13更新日updated_atDATETIME---YYYY-MM-DD HH:MM:SS

No.5 genres

用語注釈

用語意味
デフォルトジャンル全ユーザー共通のジャンル
カスタムジャンル各ユーザーで作成可能なジャンル
No.カラム名(論理)カラム名(物理)文字数PFNリレーションフォーマット備考
1ididBIGINT UNSIGNED-transactions()
$this→hasMany(Transaction::class)

fixed_costs()
$this→hasMany(FixedCost::class)
-
2ジャンル名nameSTRING20----
3ユーザーiduser_idBIGINT UNSIGNED-user()
$this→belongsTo(User::class)
-user_id = nullの場合は「デフォルトジャンル」
user_id ≠ nullの場合は「カスタムジャンル」
4デフォルトis_defaultBOOL----デフォルトはfalse
is_default = trueの場合は「デフォルトジャンル」
is_default ≠ falseの場合は「カスタムジャンル」
5作成日created_atDATETIME---YYYY-MM-DD HH:MM:SS
6更新日updated_atDATETIME---YYYY-MM-DD HH:MM:SS

No.6 saving_goals

No.カラム名(論理)カラム名(物理)文字数PFNリレーションフォーマット備考
1ididBIGINT UNSIGNED-saving_progresses()
$this→hasMany(SavingProgress::class)
-
2ユーザーiduser_idBIGINT UNSIGNED-user()
$this→belongsTo(User::class)
-
3貯金目標名nameSTRING20----
4目標金額target_amountINT----
5締切deadlineDATE---YYYY-MM-DD
6月次引き落とし金額auto_monthly_amountINT----
7開始月start_monthDATE---YYYY-MM-01自動貯金の開始対象月(例:2025-06-01)
8有効is_activeBOOL----
9作成日created_atDATETIME---YYYY-MM-DD HH:MM:SS
10更新日updated_atDATETIME---YYYY-MM-DD HH:MM:SS

No.7 saving_progresses

No.カラム名(論理)カラム名(物理)文字数PFNリレーションフォーマット備考
1ididBIGINT UNSIGNED--
2貯金目標idsaving_goal_idBIGINT UNSIGNED-saving_goal()
$this→belongsTo(SavingGoalr::class)
-
3金額amountINT----
4日付dateDATE---YYYY-MM-DD
5メモmemoSTRING255----
6作成日created_atDATETIME---YYYY-MM-DD HH:MM:SS
7更新日updated_atDATETIME---YYYY-MM-DD HH:MM:SS