J'ai un site où les gens enregistrent les résultats des jeux. 95% des jeux sont joués en solo, mais les 5% qui ne sont pas à l'écart des statistiques de victoire-tirage au sort pour chaque scénario.en utilisant une base de données relationnelle pour stocker les résultats de jeux en tête-à-tête (-to-head)
Chaque bataille a 2 côtés, et tous les résultats possibles sont:
- Side 1 victoires
- Side 2 victoires
- Dessine
Si 2 personnes jouent les uns des autres, et les deux enregistrer un jeu, vous obtenez 2 victoires pour un côté donné quand il devrait y avoir seulement un, (donner un sens?) et il rejette la cote d'équilibre. Ces enregistrements devraient être fusionnés quand vient le temps d'afficher les statistiques de la bataille.
Mon bidouille d'origine était de programmer le PHP tel que même date de jeu + même résultat = groupe en un seul résultat que, mais que la base d'utilisateurs a augmenté les collisions (des gens qui jouent le même jour et d'obtenir le même résultat par hasard) sont devenus plus fréquents. Comme ma capacité de programmation a augmenté, je me sens prêt à éliminer le kludge et le remplacer par un gestionnaire en tête-à-tête, mais j'ai du mal à trouver une structure de base de données acceptable.
Actuellement, tous les enregistrements sont stockés dans une table, battle_results
, qui a la structure suivante:
[play_id] [user_id] [battle_id] [play_date] [win_side]
000001 007 DeRa001 2010-01-01 1
000002 010 DeRa001 2010-01-01 1
Je veux donner à mes utilisateurs la possibilité de la liste si elle était un solo ou en tête-à-tête jouer, et de quel côté ils jouaient, donc je prévois de modifier la table comme ça:
[play_id] [user_id] [battle_id] [play_date] [win_side] [play_type] [user_side]
000001 007 DeRa001 2010-01-01 1 multi 2
000002 010 DeRa001 2010-01-01 1 multi 1
c'est assez facile. Mais les utilisateurs doivent être en mesure de dire avec qui ils jouaient. Au début, je pensais un grand nombre à plusieurs tableau ferait l'affaire:
[play_id] [user_id] [opponent_id]
00001 007 010
mais je me suis aperçu que lorsque l'adversaire présente le même dossier que vous serez juste colonnes: recul
[play_id] [user_id] [opponent_id]
00001 007 010
00002 010 007
et je n'ai vraiment aucune idée de la façon de tirer ces données et de construire un ratio gagnant-tirage gagnant qui reconnaîtrait que ces gens jouaient tous ensemble ...
Ai-je un sens? Comment puis-je faire correspondre ces enregistrements?
2 problèmes - le nombre d'adversaires varie, et ma difficulté est de rechercher les résultats d'une bataille particulière, et tryi ng pour fusionner des enregistrements où les joueurs jouaient ensemble (plusieurs enregistrements de site = 1 jeu de monde réel) ... c'est le noeud de mon problème – Drew
Ah .. N'a pas remarqué l'exigence de plus de 2 joueurs. Cela ne fonctionnera pas alors :( –