【CRL Pocket】戦績情報のデータベース設計

クラロワプログラミング
     

昨日、CRL Pocketでクラロワリーグの戦績情報を表示できるようになったとお知らせしました。

普段はあまり書かないのですが、テーマとして面白いかな?と思ったので、本記事では行ったデータベース(DB)のテーブル設計(論理設計)について書いてみようと思います。

※説明として分かりやすいように実際とは異なる部分があります。

 
スポンサーリンク

クラロワリーグの戦績情報

クラロワリーグ(アジア)の1試合(Matchと言います)は次のような形式で行われます。

  • 2Set先取でMatchの勝利。
  • Set1が2v2(協力バトル)、Set2が1v1。
  • Set2が終わってSetが1対1の場合、Set3のKING OF THE HILL(KOH)が行われます。
  • 4th PlayerはリザーバーとしてKOHには出場する事ができます。
  • 各Setで双方がBAN(使用禁止)カードを指定します。

 

次に実際の対戦結果を見てみましょう。


  • Set1とSet2は2Game先取で勝利。
  • KOHは3人同士が1Gameずつの勝ち抜き戦を行う。
 

情報の関連を考える

戦績情報とは、どういう情報がどういう関連をしているか、というのを考えます。
※技術用語だと、この情報のことをエンティティ(entity)と言うらしいです

戦績の最小の単位がGameという事はすぐ分かります。
クラロワというゲームにおける1試合ですね。

すると、1Matchには複数Setあり、1Setには複数Gameあるという関係に気づきます。

ただ、これだけだと4th PlayerやKOHでエントリーはしたけど試合はしなかった選手の情報が残らないので、別の情報も考えます。

図にするとこのような感じになります。
※ER図っぽい独自の図です

 

各テーブルの仕様を考える

考えた情報の関連をもとにテーブルのカラムを考えてみると次のようになります。

背景がグレーの所は、情報がダブっているので本来なら不必要なものです。

Setテーブルのスコア(Game数)はGameテーブルのデータを拾い集めれば分かりますし、GameテーブルのPlayer情報はEntryテーブルのデータから知ることができます。

実際は検索の時に便利だったりするのでダブらせてます。

 

最後に

現在のCRL PocketではBANカードの表示はデータの登録などが大変なのでできていません。
また、使用デッキは持たせるならGameテーブルですが、これもやろうとすると大変ですね。

やる気と時間があれば考えます❗

 

参考サイト

本記事の内容と関連する、参考になるかな?と思われるサイトです。

 
 

以上です!

 

・当ブログのクラロワ記事
・当ブログのクラロワリーグ記事
CRL Pocket … クラロワリーグの試合予定・試合結果など

コメント

タイトルとURLをコピーしました