Ben şu anda bir PHP / MySQL rating sistemi üzerinde çalışıyorum. Kullanıcı oranı edebilmek için kullanıcı Her kullanıcı benzersiz bir "UID" vardır oturum vardır. Orada (benim durumumda, her oyun için tek) sitesinde çoklu değerlendirme örneği olacak ve ben derecelendirme sistemi her örneği için değerlendirme tablosunda (MySQL satır bir MySQL satır UID'leri bir listesini depolamak için verimli bir yol gerekir ) olarak kim bir çetelesini tutmak için.
Ben liste tefrika PHP dizide saklanan diğer sistemlerde gördüm. Her zaman bir kullanıcı oy, daha sonra tefrika dizi, dizgilenmemiş ayıklanır vardır, yeni UID eklenir, dizi tefrika yeniden edilir ve MySQL satır güncellenir. Sayfa yüklendiğinde her zaman, bu liste bir kez daha dizgilenmemiş ve sayfayı görüntüleyen kullanıcı kullanıcı kez oy vermez emin olmak için henüz oy olup olmadığını görmek için kontrol edilmelidir.
Bu tür verimsiz ve hantal görünüyor. MySQL bu süreci daha verimli olmalarına yardımcı olacak liste fonksiyonu bir inşa var mı? Ben bu sorunu düzeltmek olabilir bir daha zeki bir yolu var mı?
Ben seri hale unutmak ve MySQL veritabanı bir metin türü alanında UID'leri saklamak olası tek alternatif olarak kabul ettik. Ben sadece her UID sonra bazı non-sayısal karakter (en bir dönem diyelim [.]) Eklemek istiyorum. Bir kullanıcı girişi eklemek için ben sadece METİN alanının ucuna UID birleştirmek ve daha sonra bir dönem olacaktır. Kullanıcı zaten ben sadece "FROM tablo WHERE oy = '.% $ UID%' SELECT *;" olabilir olarak eğer kontrol ederken. Bu daha verimli çalışmak veya işi almanın daha zarif bir yolu var mı istiyorsunuz?
Follow-up post about the table structure... Efficient MySQL table structure for rating system strong>