نظام تصنيف/تصويت MySQL (الترتيب بدقة حسب أفضل تصنيف مع الأخذ بعين الاعتبار عدد الأصوات)

StackOverflow https://stackoverflow.com/questions/1670005

سؤال

لنفترض أن لدي جدول MySQL يشبه هذا:

جدول البرامج:

id int
name text
votes int
rating int

حيث ستكون الأصوات هي عدد المرات التي قام فيها شخص ما بالتصويت لهذا العنصر وسيكون التصنيف هو متوسط ​​تلك الأصوات.

بيانات المثال:

id: 0
name: FooBar!
votes: 5
rating: 3

الآن يأتي مستخدم آخر ويقيم هذا بـ 1.كيف يمكنني حساب التصنيف الجديد؟سيكون من الأفضل إنشاء جدول آخر وإدخال صف جديد في كل مرة يصوت فيها شخص ما

id int
software_id int
score int
user_id int

ثم قم بحساب إعادة حساب متوسط ​​التقييم في كل مرة؟أعتقد أن الأمر سيؤثر سلبًا على الخادم.

السؤال الثاني:

أود أن أكون قادرًا على ترتيب البرنامج حسب الأعلى تقييمًا ولكني لا أريد برنامجًا بمتوسط ​​تقييم 5 نجوم ولكن صوتًا واحدًا فقط ليحتل مرتبة أعلى من برنامج بمتوسط ​​4 بـ 893 صوتًا.كيف يمكنني تحقيق هذا؟

هل كانت مفيدة؟

المحلول

السؤال 1 أ:كيفية حساب متوسط ​​التقييم الجديد:

vote count : 5
average rating: 3

تصويت جديد بتصنيف واحد

             5*3+1
 new rating= ----- = 16/6 = 8/3 = 2.666.. 
               6

يجب أن تأخذ في الاعتبار "وزن" (1/6 إجمالي الأصوات) للتصويت الجديد والمعدل القديم (5 مرات من أصل 6)..المتوسط ​​القديم 3 يحسب 5 مرات، والتقييم الجديد مرة واحدة => 5*3 +1= 16.ثم تقسم على إجمالي 6 أصوات تم الحصول عليها.

السؤال 1 ب:هل يجب عليك تخزين الأصوات؟

يعتمد الأمر حقًا على ما إذا كنت تتوقع أن تكون لاعبًا أم لا

أقترح عليك أن تفعل ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top