head-to-head (kafaya) oyun sonuçlarını depolamak için bir ilişkisel veritabanı kullanarak

0 Cevap php

Ben bir site insanların rekor oyun sonuçları var. Oyunların% 95'i yalnız oynadı, ancak her senaryo için kazan-beraberlik-kazan istatistikleri atmak değil% 5 vardır.

Her savaş 2 taraf vardır, ve tüm olası sonuçları şunlardır:

  • Yan 1 Kazandığım
  • Side 2 Kazandığım
  • Çizmek

2 kişi birbirleriyle oynayacak, ve bir oyun kaydetmek hem de varsa, sadece bir tane olması gerektiğini ne zaman (mantıklı?), Belirli bir taraf 2 galibiyet almak ve denge derece atar. Bu savaş en istatistiklerini görüntülemek için zamanı geldiğinde bu kayıtları birleştirilmiş olmalıdır.

Benim orijinal kludge userbase çarpışmaları büyüdü gibi same play date + same result = group into one result only, ancak (aynı gün üzerinde oynama ve tesadüfen aynı sonucu alıyorum kişi) daha sık hale gelmiştir böyle PHP program oldu.

Benim programlama yeteneği arttıkça, ben kludge dışarı şerit ve düzgün bir kafa kafaya işleyicisi ile değiştirmek için hazır hissediyorum, ama kabul edilebilir bir veritabanı yapısı ile geliyor sorun yaşıyorum.

Şu anda, tüm kayıtlar, aşağıdaki yapıya sahip olan, battle_results, bir tabloda depolanır:

[play_id] [user_id] [battle_id] [play_date] [win_side]
  000001    007       DeRa001    2010-01-01     1
  000002    010       DeRa001    2010-01-01     1

Benim kullanıcılara bir solo ya da kafa kafaya oyun olup olmadığı, ve onlar oynarken ne yan listelemek için yeteneği vermek istiyorum, bu yüzden ben şöyle tabloyu değiştirmek için planı:

[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

yeterince kolay. Ancak kullanıcılar ile oynarken kim söylemek gerekiyor. İlk başta bir çok-çok tablo hile yapmak düşündüm:

[play_id] [user_id] [opponent_id]
  00001     007        010

ama sonra rakip aynı kaydı gönderdiğinde sadece sütunları ters olacak fark:

[play_id] [user_id] [opponent_id]
  00001     007        010
  00002     010        007

ve ben gerçekten bu verileri çekin ve bu insanlar hep birlikte oynuyorlardı olduğunu kabul ediyorum, bir kazan-beraberlik-kazan oranını oluşturmak için nasıl hiçbir fikrim yok ...

Ben anlam verme muyum? Nasıl bu kayıtlar maç mı?

0 Cevap