私は定期的に12人の友達と2v2ゲームをプレイしています。ランキングシステムを作成することを目的として、データベースにプレーヤー、チーム、スコア、ゲームを追跡させたいと思っています。
私たちは定期的にチームを変更するので、私はテーブルを作ってみたplayers
、teams
そしてgames
ゲームは2つのチーム(team1とteam2)を持っているし、チームは2人の選手(player1とplayer2)で構成されています。
これにより、かなりの数の問題が発生します。たとえば、2人のプレーヤー(AとBと呼ぶことにします)を一緒にプレイする場合、プレーヤー1がAでプレーヤー2がBであるか、プレーヤー1がBでプレーヤー2であるチームがすでに存在するかどうかを確認する必要があります。 Aです
列games
とwins
はplayers
テーブルとteams
テーブルの両方にありますが、これは、プレーヤーが勝ったゲームの数だけでなく、プレーヤーがさまざまなチームでどの程度互換性があるか(チームとチームを組んだときにプレーヤーが勝つ頻度)も確認したいためです別の特定のプレーヤー)。
- ランキングスコアボード(おそらくEloレーティングシステムを使用します)
- レーティング、勝利、ゲーム、最近のゲーム統計、および彼が最も互換性のあるプレーヤーを含むすべてのプレーヤーの統計ページ。
これの多くはデータベースの正規化のいくつかの原則に違反していると私は強く疑っています。データベース設計を実装する方法としていくつかの提案が気に入っています。