Saya kini mempunyai tiga jadual berikut dalam pangkalan data bola sepak:
pasukan(nama) musim (nama, permulaan, akhir) permainan(id, Tarikh, musim, hometeam, awayteam, HomeTeamScore, AwayTeamScore) (pasukan tuan rumah, pasukan lawan dan musim adalah kunci asing)
Sekarang saya mahu mempunyai jadual baharu yang merekodkan gol yang dijaringkan dan gol yang dibolosi oleh setiap pasukan, serta mata yang mereka perolehi dalam setiap musim (satu mata untuk setiap seri, tiga untuk setiap kemenangan) . Ini akan menjadikan kedudukan mudah diperoleh.
Saya mempertimbangkan untuk membuat jadual seperti ini:
stats(musim, pasukan, jaringan gol, gol dibolosi, mata)
Kemudian setiap kali padanan baharu dimasukkan, saya turut mengemas kini jadual ini. Jadual ini akan mengandungi satu baris untuk setiap gabungan pasukan+musim. Saya tidak pasti sama ada ini adalah penyelesaian terbaik kerana saya tahu saya memperkenalkan lebihan, tetapi memandangkan maklumat ini perlu dikira dengan kerap, saya fikir ia mungkin berguna. Saya ingin mencipta pencetus untuk mengemas kini maklumat ini, tetapi saya tidak tahu cara melakukannya: bergantung pada pasukan yang mengambil bahagian dalam perlawanan, saya perlu mengemas kini dua baris dalam jadual statistik dan bergantung pada sama ada mereka di rumah atau di luar, saya perlu Kemas kini dengan nilai yang berbeza.
Sebaik-baiknya, pencetus ini harus mencipta entri dalam jadual baharu ini jika pasukan itu belum memasukkan rekod untuk musim yang dimiliki permainan itu, tetapi saya tidak pasti sama ada keadaan sedemikian mungkin berlaku dalam MySQL. Saya tahu saya tidak memberikan apa-apa ujian yang saya lakukan, tetapi itu kerana saya benar-benar tidak dapat mencari permintaan yang serupa dalam talian (atau lebih umum, satu yang memudahkan untuk menanyakan maklumat yang saya perlukan).
Selain itu, saya terbuka kepada idea yang lebih baik tentang cara menangani situasi ini.
Saya rasa anda harus mempertimbangkan struktur seperti ini:
Struktur ini juga tidak optimum. Pada pendapat peribadi saya, anda boleh menggunakan struktur yang lebih baik:
Jadual Gol akan digunakan untuk merekod setiap gol dan anda kemudian boleh membina keputusan perlawanan daripadanya, mengelakkan penggunaan medan "HomeTeamScore" dan "AwayTeamScore".
Bagi jadual Statistik, anda perlu tahu siapa yang memenangi mata, jadi mari kekal dengan struktur jadual terakhir kami:
Nilai medan status dalam Padanan boleh menjadi: ['1','X','2']
Dengan cara ini anda boleh mempunyai segala-galanya dengan mudah untuk mengira statistik anda, contohnya untuk pasukan dengan ID 12:
Anda boleh menggunakan ini sebagai titik permulaan untuk membina pertanyaan yang sedikit lebih kompleks menggunakan fungsi kumpulan mengikut dan kumpulan untuk mengira statistik pasukan. Sebaik sahaja anda berjaya membuat pertanyaan seperti ini, saya syorkan anda menggunakanViews
By the way, pertanyaan yang ingin anda laksanakan ini tidak berat, anda tidak semestinya memerlukan pencetus, fikirkan tentang reka bentuk pangkalan data dahulu!
Cara yang lebih mudah daripada menggunakan pencetus untuk mengekalkan data berlebihan adalah dengan menggunakan paparan; ia hanyalah jumlah kesatuan asas: