SORU
26 HAZİRAN 2009, Cuma


&Quot için veritabanı Mimarisi;Rozet" Sistem & Keyfi Kriterleri (MySQL/PHP)

Quickie-Soru:

Özetlemek gerekirse, önceden var olan yapısal değişiklikler, kullanıcı veritabanında tablolar gerektirmeden rozet kuralı oluşturma belirsiz sağlayan böyle bir veritabanı tasarımı nasıl biraz kafam karıştı.

Depolama Rozet Başlık, Kriterleri, vb. Bu Tablo nasıl olurdu?

  • badge_id (1)
  • badge_title (10K Rozet)
  • badge_image (10k.jpg)
  • ([mesajlar] >badge_criteria = 10000)...

-Soru Soluksuz:

Benim kendi kişisel projeleri üzerinde rozet-bir sistem uygulamak istiyorum, ama en iyi böyle bir şey yapacağını nasıl bir tavsiye arayan. Burada soruları-sistemleri rozet ilgili bir şeyler okudum, ama veritabanı mimarisi çok ilgiyi görmüyor.

Kullanıcı puan dayalı rozetler ("10k Rozet") oldukça düz ileri görünüyor. Varsayımsal Kullanıcılar ün (upvotes, downvotes, cevap-kabul vs.) etkileyen herhangi bir olay, kullanıcıların yeni ün incelemesi ve potansiyel olarak bir rozet ödülü için bir yöntem çağırmak olacaktır.

Bu sistemi oldukça yalındır, ama neye benziyor gibi bir veritabanı için yönetici kim oluşturun sayısız miktarda rozetleri ile az çaba yolda bazı büyük göre farklı kriterler ve sadece kullanıcı ün.

Kullanıcı-ün Olası kayıt kullanıcı kendi içinde bir değerdir. Ama ideal olarak, yeni rozetleri oluşturduğunuzda kullanıcı tabloya yeni alanlar eklemek zorunda kalmamak için istemez mi? Örneğin "100 adet" rozet - yeni bir sütun oluşturmak olmaz "" Kullanıcılar Tablo içinde, değil mi? entries_edited Düzenlenmiş Ve artış sonra her bir giriş düzenlenmiş

Herhangi bir ipucu?

Arşiv Stackoverflow:

< / ^ hr .

Not: nasıl kullanıcılar ile ilişkilendirmek rozetleri demiyorum. Nasıl ödül rozetleri (bu yapılacak Program aracılığıyla) demiyorum

CEVAP
26 HAZİRAN 2009, Cuma


Onunla gitmek istiyorum ne kadar bağlı olarak, şema oldukça karmaşık olabiliyor. İzlemeniz gereken temel maddeler gibi geliyor bana:

Badges awarded
Points earned

Oldukça basit şimdiye kadar, ama mümkün olmak istiyorum dinamik olarak rozetleri ve yeni puan yeni kategoriler oluşturun. Rozet ödülleri belirli bir miktar için bir veya daha fazla nokta kategoride puan kazanmaya bağlıdır. Nokta kategori (hak) ve nişanlar arasındaki ilişki izlemeniz gerekir:

Point categories
Badge categories

Anahtar kullanıcı olur puan rozetleri bağlantı noktası kategorilerde bağlayacak olan tablo. Kullanıcılar bir veya daha fazla rozetleri doğru puan kazanmaya katkı sağlayacak belirli bir kategori içinde puan kazanmak.

badges:
badge_id
badge_name
required_points
....

point_categories:
point_id
category_name
weighting (optional)
...

point_groups:
badge_id
point_id
weighting (optional)
...

user_points:
user_id
point_id
points
...

user_badges:
user_id
badge_id
points_earned
badge_awarded (yes/no)
...

Senin "" arayüzü birisi kategoriler o rozeti (point_groups) kazanmak için gerekli olan. yeni bir rozet oluşturmak ve almak için izin verecek admin Bir kullanıcı puan (user_points) kazandığı zaman, user_points tablo güncelleme, bu puan (point_groups) katkıda bulunabileceğini belirlemek. Daha sonra point_earned ile puan kazandı ve user_badges tablo güncelleme etkilendi rozetleri puanları yeniden derleyin. Onay rozetleri tablo required_points karşı user_badges içinde points_earned alanı.

Özel rozetleri noktası kategorileri için farklı kategoriler için farklı ağırlıklar, ya da farklı ağırlıklar bile atayarak daha çok meraklısı alabilirsiniz. Ama bu Kur rozetleri ve puan kategorileri sınırsız sayıda ve oldukça kolay tablo yapılarını değiştirmeden oluşturulan edilebilir.

Eğer bu sizin için ne arıyorsanız tam değilse, o zaman en azından bir oy veya yazmaya bir sürü için iki almak gerektiğini düşünüyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • audivila

    audivila

    5 HAZİRAN 2009
  • knopik96

    knopik96

    7 Mayıs 2011