صدرا حکیم
4 سال پیش توسط صدرا حکیم مطرح شد
3 پاسخ

طراحی جدول لایک و دیسلایک و منابع یادگیری دیتابیس

سلام دوستان
بنظرتون برای پیاده سازی سیستم لایک/دیسلایک، بهتره که مثلا برای جدول پست ها، بیایم دو تا ستون برای اینها بذاریم ؟ یا کلا یه جدول به اسم likes بسازیم و صرفا با user id و post id و یه ستون برای لایک ( که boolean باشه و لایک و دیسلایک بودنش رو مشخص کنه )، این رو پیاده سازی کنیم
اصلا فرقی زیادی میکنند یا نه ؟ ( منظورم best practice و حالا کارایی و ایناس )

دوستان اگر منابع خوبی ( کتاب، کورس، سایت یا ... ) برای طراحی تخصصی دیتابیس (mysql) میشناسید، ممنون میشم معرفی کنید


ثبت پرسش جدید
محمد معین بابائی
تخصص : Web developer
@moeinbabaei 4 سال پیش مطرح شد
1

خب تو میتونی از این کد رو در قسمت import در phpmyadmin قرار بده

CREATE TABLE `likes`. ( `id` INT NOT NULL AUTO_INCREMENT , `like` INT NOT NULL DEFAULT '0' , `ip` INT NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

و در فیلد اول به صورت اتوماتیک اضافه میشه که بعدا می تونی تعداد رو از روی این محاسبه کنی
در فیلد دوم می تونی عددی بزاری مثلا اگر لایک شد 1 و دیس لایک شد عدد -1 یا 2 رو اینسرت کنی
و در فیلد اخر هم ای پی رو ریموت می کنی که در اخر فقط هر کاربر بتواند یکبار رای بدهد

و بقیه کد ها php هستش

منبع برای یادگیری دیتابیس و ..


محمد امیری
تخصص : backend coder
@mohammadeng3731 4 سال پیش مطرح شد
0

سلام.
میتونید برای لایک جدا و برای dislike جدا جدول ایجاد کنید و با ایجاد رابطه یک به چند با جدول پست مثلا و با استفاده از withCount بیای تعداد لایک هارو بشماری

post::withCount(['likes','dislikes'])->get()

محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
1

پاسخ سوالتون خیلی بستگی داره به نیازتون. یک وقت هست صرفا به تعداد سرجمع شده لایک و دیس لایک احتیاج دارید. یعنی یک عدد که حاصل جمع لایک ها به شکل مثبت و دیس لایک ها به شکل منفی هست. اینجوری فقط کافیه یک فیلد از نوع integer به جدول پست هاتون بعنوان مثال اضافه کنید و با هر بار لایک یک عدد بهش اضافه بشه (increment) و با هر بار دیس‌لایک یک واحد ازش کم بشه. (decrement)

یک وقت هست براتون مهمه که بدونید چه کاربری کدوم پست رو لایک یا دیس‌لایک کرده. اون وقت طبیعتا یک رابطه One-To-Many بینشون برقراره. و میشه بعنوان مثال یک جدول داشت با نام votes با فیلدهای زیر:

- post_id
- user_id
- type

که برای فیلد تایپ میشه 1 بمعنای لایک و -1 بمعنای دیس لایک داشت.

اگر هم نظرسنجیتون جنبه عمومی تر داره و نمی‌خواید محدود به کاربرهای از پیش ثبت نام کرده باشه، احتمالا بایستی از روش هایی مثل استفاده از IP یا Session استفاده کنید تا جلوی ثبت رای‌های تکراری گرفته بشه. ولی منطقش به همین شکل باقی می‌مونه تقریبا.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام