マリオカートのER図について考える

ER図とは?を学ぶランチがあったので、アウトプットに至るまでをメモ。
ゲームのDBについてなんて考えたことが無いので、
やりっ放しにせず残してあげようと思います。

今回は、マリカーのフレンドランキング画面を出すために必要な設計を考えます。
軽いランチなので、通勤時間内での作成を目指しました。

こういうアウトプット初めてなので、徐々に慣れていきたいです。
🍄

1.最終的に出したいイメージを考える

今回だと既に結果があるので、この画面から出したいデータを取り出します。
IMG_9993.PNG

・フレンド名
・バッジ
・スコア
・ランキング残り時間

これくらい。

2.どんなデータが必要か列挙する

難しいので手書きします。ペンで書いた方が、どんどん出てくると思う。
9732C317-955A-4E52-ABB2-148CC268FEAC.jpeg

3.時系列で並べる

2と3の順番は逆でも良いと思います。
フローが長いほど、時系列に沿って考える方が楽。追加の項目があれば都度増やします。
9DABA32A-C63B-415A-82E4-ED6D52469BD9.jpeg

不要データを消す。赤入れをしました。
B1F1F410-1DF1-432E-9043-2F712C75B897.jpeg

4.データのかたまり毎に分類してみる

最後までペンでいきます✏️
この1かたまりをエンティティと呼びます。ER図のEですね。
7F63622E-61F3-44DE-B8AA-9B9B3D565F66.jpeg

5.エンティティ同士の関係性を線でつなぐ

リレーション、ER図のR部分です。
親子関係にあるテーブルは、必ず繋ぐ。
今回はランキング結果なので、必要なエンティティだけ作ってるはず。
13E36660-A510-44E1-95F6-9D54F418586D.jpeg

浮いているエンティティがありました。
繋げるというと、のちにSQLでクエリを書くときのJOINにあたります。
JOINするときは同じ意味を持つ項目同士をイコールで繋いだりするので、共通のidをエンティティ間で持つ必要があります。

とりあえず
何やら難しいですが、結びつける為にキーとなる項目が必要なんですね。

id を振って、足りない項目を増やして、線で再び繋ぎます。
最終的に一人ぼっちのエンティティは居なくなるように繋ぎました。
70BCB781-BA0D-44DE-99F6-E61423AEA7ED.jpeg
それっぽくなりました。

このままだとごちゃごちゃしているので、ちゃんとしたツールで図にします。

〜〜〜 🍄ここから余裕があったらやる🍄 〜〜〜

6.それらしいカッコイイ項目名を付けてあげる(英語)

○○idとか▲▲nameとか。
日本語のままでも分かりやすいですが、実践的に英語変換します。

7.図に落とし込む

ER作成ツールを使ったり、その他ツールで見やすい図にします。
今回、たまたま見つけたこれで作成→ WWW SQL Designer

⭕️:UIが可愛い
❌:1対多の「鳥の足」マークが付けられない

線だけ引くなら手軽にできました。
mario_er.png

8.感想

ランキング集計スコアについて

予め計算して持っておく案がありました。

フレンド100人いた場合、都度3コースのスコア合計を計算する時間がかかるかもって予想できなかった。
そうすると、ランキングページの読み込み速度の短縮と、ルビー配布時に使えると。

フレンドが20人も居ないから思いつかなかった!フレンド増やそう〜!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away