Saya membuat halaman web untuk memasang taruhan pada semua pertandingan turnamen sepakbola Euro 2012 mendatang. Butuh bantuan untuk memutuskan pendekatan apa yang harus diambil untuk fase sistem gugur.
Saya telah membuat mockup di bawah ini, yang saya cukup puas ketika harus menyimpan hasil dari semua pertandingan penyisihan grup "yang diketahui". Desain ini membuatnya sangat mudah untuk memeriksa apakah pengguna telah memasang taruhan yang benar atau tidak.
Tapi apa cara terbaik untuk menyimpan perempat final dan semi final? Pertandingan tersebut tergantung pada hasil di babak grup.
Satu pendekatan yang saya pikirkan adalah menambahkan SEMUA pertandingan ke matches
tabel, tetapi menetapkan variabel atau pengidentifikasi yang berbeda untuk tim tuan rumah / tandang untuk pertandingan dalam fase sistem gugur. Dan kemudian memiliki meja lain dengan pengidentifikasi yang dipetakan ke tim ... Ini bisa bekerja, tetapi rasanya tidak benar.
sumber
Jawaban:
Saya akan memulai dengan mencoba memperbaiki semua informasi yang telah ditentukan dalam model itu sendiri termasuk
Beberapa informasi ini akan berupa data dalam tabel, beberapa akan dikodifikasikan logika dalam pandangan.
Sesuatu seperti ini mungkin:
Informasi yang dimainkan oleh tim di Q1 tidak perlu disimpan secara langsung karena dapat dihitung dari hasil penyisihan grup. Satu- satunya perubahan yang dibuat saat turnamen berlangsung adalah memasukkan ke dalam
result
tabel.sumber
Saya pikir menggunakan ID tim adalah cara yang tepat. Tingkat abstraksi lain untuk semua putaran final hanya menambah kompleksitas yang tidak perlu untuk tidak banyak manfaat selain dari pra-memuat tabel pertandingan dengan data.
Struktur data terlihat cukup solid untuk mendukung ini. Perempat final dan semi final perlu ditambahkan ke tabel pertandingan setelah hasil pertandingan awal masuk. Jika pertandingan ditetapkan secara acak maka ini adalah operasi manual, namun, jika mereka berada dalam urutan tertentu ...
... maka ini mungkin dapat dilakukan dengan kueri. Sekali lagi, kompleksitas kueri mungkin tidak sepadan dengan usaha tergantung pada jumlah tim
sumber
Merupakan ide bagus untuk menyimpan semua kecocokan di tabel "kecocokan". Namun saya akan menambahkan bidang "peringkat" tambahan untuk itu, karena nanti Anda membutuhkannya untuk membangun pohon biner untuk secara efisien query tabel dalam memori. Ini masalah algoritma peringkat klasik dan Anda dapat google untuk turnamen kode abu-abu untuk informasi lebih lanjut atau lihat di riwayat stackoverflow saya. Pada dasarnya turnamen adalah pohon biner. Berikut ini adalah artikel bagus tentang kode abu-abu: http://villemin.gerard.free.fr/Wwwgvmm/Numerati/CodeGray.htm . Sayangnya ini bahasa perancis. Berikut adalah cara membuat pohon biner dari peringkat: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/229068 .
sumber