格闘技統計サイトを作成しています。特定の試合の統計、たとえば試合の終了方法を保持するデータベースの設計に問題があります。
それは非常に簡単です:
-> Decision
また
-> Decision -> Unanimous
また
-> Decision -> Unanimous -> 30-27, 29-28, 29-28
また
-> Submission -> Armbar
この場合、単純なツリーがあり (各アイテムは 1 つ以上の子を持つことができます)、単純な(id, "Name", parent_id)
組織によって実装できます。その中で、私は戦いごとにいくつかの一意のbout-finish-idを割り当て、ツリーを上って、親、リンク、およびすべてで適切なチェーンを作成します.
残念ながら、いくつかのアイテムが複数の親を持つ場合、状況はもう少し複雑になる可能性があります。
-> Submission -> Armbar -> Armbar triangle
-> Submission -> Triangle -> Armbar triangle
「アームバー三角形」は明らかに「アームバー」と「三角形」の両方の子であるため、これは非常に簡単なはずです。しかし、私はこの時点ですでに道に迷っており、この複数の親を持つリストを適切に設計する方法をよく理解していません。
しかし、それだけではありません。
他にもたくさんの統計があります。たとえば、その仕上げの他のすべての詳細。KO/TKO 勝利の場合、これは各選手のスタンス (左利き、右利き、中立)、特定の攻撃、動きに関する情報、ヒット エリアなどに関する情報である可能性があります。後ろの左利き相手の顎の左側に位置します。」.
サブミッションについて話す場合は、ポジションの簡単な例について話しましょう。
-> Submission -> Triangle -> Armbar triangle -> Guard position
また
-> Submission -> Triangle -> Armbar triangle -> Mount position
しかし、ここでの問題は、ガードまたはマウントがこのチェーンの任意のポイントにある可能性があることです。次のすべてが正しいです。
-> Submission -> Triangle -> Guard position -> Armbar triangle
-> Submission -> Guard position -> Triangle -> Armbar triangle
-> Guard position -> Submission -> Triangle -> Armbar triangle
ここで、いくつかのアイテムが相互に関連しているという問題が発生します。これは、基本的に、無限ループが続く可能性があることを意味します。これは、データベースの設計とレンダリングの両方において明らかに大きな問題です。
各エントリをクリックして、このエントリに関連するすべての親/子を表示できるようにしたいので、特定の順序で情報を配置することはできません (たとえば、位置を常に最後に配置するなど)。
私が考えた唯一のことは、異なる情報を完全に分離することでした (サブミッション、ストライク、ディシジョン、スタンス、ポジション、ヒット ターゲットなどの異なるリスト)。次に、好きなだけ「戦闘終了タグ」を配置できるタグのようなリストを作成します。これは私が望むものを達成するための唯一の適切な方法ですか?
しかし、それでは、たとえばすべての「ガードからの三角形」を簡単にチェックできないか、タグの組み合わせの精巧なシステムを作成する必要があることを意味します...
しかし、それだけではありません。
また、フィニッシュに至る一連のイベントを保存できるようにしたいと考えています。
-> Loser's (righty) left hook to winner (lefty)'s right jaw -> Loser's Ground and Pound from Guard -> Winner's Armbar triangle from Mount
これは、以前に定義された「適切な仕上げ」のみを含めることができる記述の例です。
そして今、私はそれを実現し、私の夢のシステムについて話す機会を得ました (それが実装可能かどうかに関係なく)。リスト」には、「右にスリップ」、「ダブル レッグ テイクダウン」、「ヒップバンプ スイープ/リバーサル」などがあります。
信じられないかもしれませんが、それ以上のものがあります...最後の願い(スリップとテイクダウンについて)を忘れても、レベルに応じて一連のイベントのアイテムを評価できるようにしたいと思います彼らは結果に影響を与えました。たとえば、1 から 3 まで。
-> Loser's (righty) left hook to winner (lefty)'s right jaw (3) -> Loser's Ground and Pound from Guard (1) -> Winner's Armbar triangle from Guard (3)
この機能をきちんと作りたいし、最初から正しく実装したい。しかし、私はこの問題を複雑にしすぎているように感じます。空想を超えた気がしますが、やめられないようです。私の希望に応じて適切なデータベース構造を作成する方法はありますか? どのようなテーブル/行構造を選択すればよいですか? それとも、このクレイジーさを忘れて、合理的な (これが何を意味するにせよ) セットアップにスケールダウンする必要がありますか? では、私の問題に対する合理的な解決策は何でしょうか?