• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
طراحی سیستم امتیازدهی
#1
سلام. وقت بخیر
تو یه پروژه دارم سیستم امتیازدهی طراحی میکنم.
امتیازدهی به این صورت هست که کاربر میتونه از ۱ تا ۵ به هر پست چهارتا امتیازجداگانه بده به طور مثال ۱- آیتم۱ ۲- آیتم۲ ۳- آیتم۳ ۴-آیتم۴ (به هرکدوم از آیتم‌ها میتونه از ۱ تا ۵ امتیاز بده)
و من یک جدول طراحی کردم به این صورت:
user_id post_id item1 item2 item3 item4 total
در آخر هم امتیاز کلی یا میانگین امتیاز هر پست رو (که اونم بین ۱ تا ۵ هست) محاسبه میکنم و در total ذخیره میکنم.
میخوام ببینم این کار صحیح هست یا راه حل بهتری هم هست؟
یکمم در مورد میانگین گرفتن و جمع همه امتیازهایی که از کاربرهای مختلف گرفته شده و شیوه درست و اصولیش اگر توضیح بدید ممنون میشم.
تشکر
  پاسخ
تشکر شده توسط :
#2
سلام
الان این total به ازای هر کاربر و به ازای هر پست هست
پس برای امتیاز کل باید یک فیلد در جدول post اضافه کنید
اگه نیازی به امتیاز کل هر کاربر نیست میتونید این فیلد رو از جدول جاری حذف کنید
  پاسخ
تشکر شده توسط : al!r3za
#3
خب توی همون پست یه فیلد بذار به اسم total هر کی هر چقدر امتیاز داد تو اضافه اش کن بهش ، یه فیلد دیگه هم بذار برای تعداد امتیاز دهندگان هر کی امتیازی داد یه دونه اضافه اش کن .
یعنی در اصل یه total و یه counter بذار .
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : al!r3za
#4
بهتر نیست total که تو جدول امتیاز هست، جمع امتیاز این چهارتا آیتم باشه، بعد total که تو جدول پست هست،‌ میانگین کلی امتیاز پست؟
  پاسخ
تشکر شده توسط :
#5
خب آخه بیخودی دیتابیس رو پر میکنی !!!

فرض کن من یه پست دارم به اسم 1
total 0
counter 0


حالا من میام روی 5 ستاره کلیک میکنم
total 5
counter 1

یکی دیگه سه ستاره

total 9
counter 2

یکی دیگه 1 ستاره

total 10
counter 3


این طوری راحتتر نیست ؟؟
امتیار هز پست هم میشه total/counter البته رندش کن .
دیگه یه جدول دیگه رو بیخودی نساز .
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : al!r3za
#6
جدولت رو اینطوری طراحی کن:
user_id post_id score

هرکاربری که امتیاز داد در فیلد score ذخیره کن. برای شمارش تعدادش هم کافیه تعداد رکوردهای جدول براساس یه پست رو بگیری:
کد:
SELECT COUNT(*) FROM `mytable` WHERE `post_id` 5
برای جمع امتیازها هم میتونی از تابع sum استفاده کنی
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط : mahmood_20050


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان