### ユーザー(Users)テーブル
| カラム名 | データ型 | 主キー | 外部キー | 制約 |
|----------------|----------------|--------|----------|------------------------------|
| id | UUID | ○ | | NOT NULL |
| name | VARCHAR(50) | | | NOT NULL |
| email | VARCHAR(100) | | | UNIQUE, NOT NULL |
| auth_provider | VARCHAR(20) | | | NOT NULL |
| avatar_url | TEXT | | | NULL 可 |
| is_anonymous | BOOLEAN | | | DEFAULT FALSE |
| created_at | TIMESTAMP | | | DEFAULT CURRENT_TIMESTAMP |
---
### 作業ルーム(WorkRooms)テーブル
| カラム名 | データ型 | 主キー | 外部キー | 制約 |
|----------------|----------------|--------|--------------|------------------------------|
| id | UUID | ○ | | NOT NULL |
| creator_id | UUID | | → Users(id) | NOT NULL |
| title | VARCHAR(100) | | | NOT NULL |
| description | TEXT | | | NULL 可 |
| tag | VARCHAR(30) | | | NULL 可 |
| scheduled_time | TIMESTAMP | | | NULL 可 |
| created_at | TIMESTAMP | | | DEFAULT CURRENT_TIMESTAMP |
---
### ルーム参加者(RoomParticipants)テーブル
| カラム名 | データ型 | 主キー | 外部キー | 制約 |
|----------------|----------------|--------|-----------------------|------------------------------|
| id | UUID | ○ | | NOT NULL |
| user_id | UUID | | → Users(id) | NOT NULL |
| room_id | UUID | | → WorkRooms(id) | NOT NULL |
| joined_at | TIMESTAMP | | | DEFAULT CURRENT_TIMESTAMP |
---
### 作業ログ(WorkLogs)テーブル
| カラム名 | データ型 | 主キー | 外部キー | 制約 |
|------------------|----------------|--------|--------------------|------------------------------|
| id | UUID | ○ | | NOT NULL |
| user_id | UUID | | → Users(id) | NOT NULL |
| room_id | UUID | | → WorkRooms(id) | NULL 可 |
| task_description | TEXT | | | NULL 可 |
| focus_minutes | INTEGER | | | NOT NULL |
| created_at | TIMESTAMP | | | DEFAULT CURRENT_TIMESTAMP |
---
### チャットメッセージ(ChatMessages)テーブル
| カラム名 | データ型 | 主キー | 外部キー | 制約 |
|--------------|----------------|--------|--------------------|------------------------------|
| id | UUID | ○ | | NOT NULL |
| room_id | UUID | | → WorkRooms(id) | NOT NULL |
| sender_id | UUID | | → Users(id) | NOT NULL |
| message_text | TEXT | | | NOT NULL |
| sent_at | TIMESTAMP | | | DEFAULT CURRENT_TIMESTAMP |
---
### 通報(Reports)テーブル
| カラム名 | データ型 | 主キー | 外部キー | 制約 |
|------------------|--------------|--------|----------------------|------------------------------------------|
| id | UUID | ○ | | NOT NULL |
| reporter_id | UUID | | → Users(id) | NOT NULL |
| reported_user_id | UUID | | → Users(id) | NOT NULL |
| content_type | VARCHAR(20) | | | 例: 'room', 'chat' |
| content_id | UUID | | | 通報対象ルームまたはチャットのID |
| reason | TEXT | | | NOT NULL |
| created_at | TIMESTAMP | | | DEFAULT CURRENT_TIMESTAMP |
---
### 管理者ログ(AdminLogs)テーブル
| カラム名 | データ型 | 主キー | 外部キー | 制約 |
|-----------------|----------------|--------|------------------|------------------------------|
| id | UUID | ○ | | NOT NULL |
| admin_action | VARCHAR(100) | | | NOT NULL |
| target_user_id | UUID | | → Users(id) | NULL 可 |
| target_room_id | UUID | | → WorkRooms(id) | NULL 可 |
| created_at | TIMESTAMP | | | DEFAULT CURRENT_TIMESTAMP |
ご希望があれば、このデータベース設計を基にER図の作成やSQLスキーマの出力も可能です。必要であればお知らせください。
wikiに保存しよう
AIによって作成されたデータベース設計は、チームで共有・管理できるようGitHubのwikiに保存しておきましょう。
マークダウン形式で出力されなかったら、マークダウン形式に修正してもらいましょう。

まとめ
これで、生成AIを活用してアプリの要件定義書から仕様書、さらにデータベース設計までを効率的に作成することができました。それぞれの内容をチェックし、不足や誤りがあれば適宜修正を加えることで、より実践的で信頼性の高い設計資料が完成します。
このように、生成AIを活用することで、
- ドキュメント作成のスピード向上
- 作業の属人化防止
- チーム内での共通理解の促進
といった多くのメリットが得られます。
今後は、これらのドキュメントをもとに実際のアプリ開発を進めていきましょう。生成AIはあくまでアシスタントですが、使い方次第で非常に強力なパートナーになります。ぜひ、日々の開発に積極的に取り入れてみてください。