
ロードマップ形式のTodoアプリを作る(設計編 Part.2)
公開日:2025年3月17日
最終更新日:2025年3月17日
こんにちは、Yu_riです。
今回は前回記載できなかったDB設計周りについてです。
今回開発するロードマップ形式のTodoアプリのER図は↓のような形で考えています。
使用するDBMSはPostgreSQLにする予定です。

上記ER図のテーブルごとに設計内容を記載していきます。
※idやcreated_at、updated_at、deleted_atはgorm.Modelで生成したかったが、idはNano IDを利用したかったので今回はgorm.Modelの使用はなしとします。
※実装の中で変更がある場合は都度マイグレーションしていきます。
users テーブル
カラム名 | データ型 | 制約 |
---|---|---|
id | char(21) ※NanoIDで生成 | PRIMARY KEY |
created_at | timestamp | |
updated_at | timestamp | |
deleted_at | timestamp | |
name | text | NOT NULL |
text | NOT NULL | |
password | text | NOT NULL |
roadmaps テーブル
カラム名 | データ型 | 制約 |
---|---|---|
id | char(21) ※NanoIDで生成 | PRIMARY KEY |
created_at | timestamp | |
updated_at | timestamp | |
deleted_at | timestamp | |
roadmap_title | text | NOT NULL |
user_id | char(21) | NOT NULL |
flow_edges テーブル
カラム名 | データ型 | 制約 |
---|---|---|
id | char(21) ※NanoIDで生成 | PRIMARY KEY |
created_at | timestamp | |
updated_at | timestamp | |
deleted_at | timestamp | |
source_id | char(21) | NOT NULL |
target_id | char(21) | NOT NULL |
roadmap_id | char(21) | NOT NULL |
todo_groups テーブル
カラム名 | データ型 | 制約 |
---|---|---|
id | char(21) ※NanoIDで生成 | PRIMARY KEY |
created_at | timestamp | |
updated_at | timestamp | |
deleted_at | timestamp | |
type | text | NOT NULL |
position | jsonb | NOT NULL |
data | jsonb | NOT NULL |
roadmap_id | char(21) | NOT NULL |
todo_items テーブル
カラム名 | データ型 | 制約 |
---|---|---|
id | char(21) ※NanoIDで生成 | PRIMARY KEY |
created_at | timestamp | |
updated_at | timestamp | |
deleted_at | timestamp | |
Item_title | text | NOT NULL |
is_completed | boolean | |
todo_group_id | char(21) | NOT NULL |
次の記事ではディレクトリ構造について書けたらなと思います。