LoginSignup
718

More than 1 year has passed since last update.

posted at

updated at

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

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

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

データベース・・・?という初心者メンバーでもイメージしやすいように。
こういうアウトプット初めてですが、徐々に慣れていきたいです。

ER図の後は実際にSQLも書いてみてます。
BigQueryがSQL初心者練習に丁度よかった話

🍄

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対多の「鳥の足」マークが付けられない
(おすすめのWEB上ツールがあれば知りたい)

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

8.感想

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

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

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

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

追記

ER図ランチ🍔という気軽な会をセッティングしてくださった、社内の方々と
新卒で入った会社で1から教えてくれた方々に
とても感謝するきっかけになりました。

最初にしてはちょっと難しかったかもしれないけれど。初ER図作り楽しかった。
身近なサービスでなんとな〜くイメージして、意見を出し合うだけでも◎と思いました!

次のステップはこちら。
BigQueryがSQL初心者練習に丁度よかった話

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
718