前回のあらすじ
このアプリを作る上で無くてはならない、
データの関係性について考えていきます。
これ、ER図といって
ER図(Entity Relationship Diagram)
実体x関係性x図 です。その名の通りデータの関係性を表したものです。

こんなやつ
Draw.ioで作っていくよ
ER図を書く方法はたくさんあるのですが、
今回はしっかりと自分で書けるように
Draw.ioという無料アプリを使ってみます。
要素を満たすカラム名を決めていくでおじゃ
先に画面遷移図を見つつカラム名、やることに対して
必要そうなのをリストアップしていくよ
USERS(ユーザー個人の基本情報)
| カラム名 | 型 | 説明 | 備考 |
|---|---|---|---|
| id | int PK | ユーザー ID | 主キー |
| string | メールアドレス | ログイン認証用 / UNIQUE | |
| name | string | 表示名 | 主人公の名前 |
| birthday | string | 生年月日 | 例:1985-01-23 |
| gender | string | 性別 | 任意入力 |
| encrypted_password | string | 暗号化されたパスワード | 認証 |
| created_id | datetime | 作成日時 | |
| updated_id | datetime | 更新日時 |
STATUSES(ユーザー個人の詳細情報)
| カラム名 | 型 | 説明 | 備考 |
|---|---|---|---|
| id | int PK | ID | 主キー |
| user_id | int FK | ユーザー ID | users.id へ外部キー |
| like_gamehard | string | 好きなゲームハード | 例:PS2 / Switch |
| like_gametype | string | 好きなゲームジャンル | 例:RPG / ACT |
| own_title | string | 称号 | 自由記述 侍より馬の骨とか |
| self_introduce | text | 自己紹介 | 自由文 3行くらい想定 |
| salt | string | ソルト(認証補助) | 認証実装次第で不要可能 |
| role | int | ユーザー権限 | 例:admin=1 / user=0 |
| created_id | datetime | 作成日時 | |
| updated_id | datetime | 更新日時 |
GAMES(登録しているゲーム)
| カラム名 | 型 | 説明 | 備考 |
|---|---|---|---|
| id | int PK | ID | 主キー |
| title | string | 登録ゲームタイトル | 例:アクトレイザー |
| hardware | string | 登録ハード | 例:SFC / PS2 |
| type | string | ジャンル | 例:RPG / ACT |
| recommend | string | おすすめ度 | 5段階評価 |
| difficulty | string | 難易度 | 5段階評価 |
| memo | text | ゲームの思い出 | 自由記述 |
| created_id | datetime | 作成日時 | |
| updated_id | datetime | 更新日時 |
BOARDS(年表単位のコンテナ)
| カラム名 | 型 | 説明 | 備考 |
|---|---|---|---|
| id | int PK | ID | 主キー |
| user_id | int FK | ユーザー ID | ユーザーを引っ張ってくる |
| game_id | int FK | ゲーム ID | ゲーム引っ張ってくる |
| event_id | int FK | イベント ID | イベントごとを引っ張ってくる |
| created_id | datetime | 作成日時 | |
| updated_id | datetime | 更新日時 |
BOARDS_GAMES(年表とゲームを結ぶ中間テーブル)
| カラム名 | 型 | 説明 | 備考 |
|---|---|---|---|
| id | int PK | ID | 主キー |
| board_id | int FK | 年表 ID | boardのデータ引っ張る用 |
| game_id | int FK | ゲーム ID | gamesのデータ引っ張る用 |
EVENTS (イベントの登録)
| カラム名 | 型 | 説明 | 備考 |
|---|---|---|---|
| id | int PK | ID | 主キー |
| title | string | イベント内容 | 例:ゲームボーイ 発売 |
| event_year | datetime | イベント年 | 例:1989年 |
| event_type | string | イベントタイプ | 例:歴史 |
BOARDS_EVENTS(年表とイベントをつなぐ中間テーブル)
| カラム名 | 型 | 説明 | 備考 |
|---|---|---|---|
| id | int PK | ID | 主キー |
| board_id | int FK | 年表 ID | 年表に渡すためのやーつ |
| event_id | int FK | イベント ID | イベントを持ってくるためのやーつ |
中間テーブルに関してこんなの作りました。
そんなこんなでできました。
お互いお手手を繋いだら完成
爽やかなカラーリングにしてみました。
あとは各カラムの説明を入れることでわかりやすくしました。
まとめ
ER図は書き方、書く方法がいっぱいあるよ
- マーメイド記法
- アプリ Draw.ioとか使う
- VSコード内でもできるっぽい
先に画面遷移図を見つつカラム名、やることに対して
必要そうなのをリストアップしていくよ
お互いお手手を繋いだら完成

