راکت
حل شده

پیاده سازی جداول چت روم

4 پاسخ

سلام
سوال من درمورد دیتابیس یک چت روم هست.
سوال اول من درمورد گروه و کانال هست
اینکه هر کدوم باید یک جدول جدا داشته باشند یا هر دو داخل یک جدول ذخیره کنیم و با فیلدی (به عنوان مثال type ) گروه و کانال ها مشخص کنیم ؟
سوال دوم در مورد اجازه دسترسی برای هر کاربر توی گروه و کانال هست.
یک کاربر در یک گروهی مدیر گروه هستش و در گروه دیگر یک کابر معمولی یعنی اجازه دسترسی هر کاربر نسبت به هر گروه متفاوت هستش
ساختار دیتابیس این قسمت چجوریه ؟ روابط بین جدول role و group باید به چه شکلی پیاده سازی بشه

ثبت پرسش جدید

پاسخ‌ها

4
ASPgo
ASPgo
@asp.gosk

تخصص: HTML، CSS، PHP و JS، طراح قالب و افزونه وردپرس، سئوکار و مقاله نویس

بهترین پاسخ

برای اینکه هر نقش تو گروه های مختلف قابلیت های خاص خودش رو داشته باشه باید فیلد دسترسی ها رو به جدول گروه ها اضافه کنی. میتونی مثل همون چیزی که گفتم اینبار هم به شکل JSON ذخیره کنی
میتونی مثلا یه فیلد JSON به اسم role access تو table گروه ها اضافه کنی و به صورت پیشفرض مقدارش رو به این شکل تنظیم کنی(کد های زیر JSON هستن):

[
    {
        "name": "admin",
        "access": {
            "ban-moderators": true,
            "ban-users": true,
            "edit-channel": true
        }
    },
    {
        "name": "moderator",
        "access": {
            "ban-moderators": false,
            "ban-users": true,
            "edit-channel": true
        }
    }
]

و پنل ادمین گروه رو طوری تنظیم کنی که وقتی طرف(ادمین چنل یا گروه) ثبت تغییرات رو زد(همون submit) این فیلد JSON تو دیتابیس تغییر کنه طبق چیزی که کاربر تو پنل تنظیم کرده. میتونی تو پنل ادمین از checkbox استفاده کنی

ASPgo
ASPgo
@asp.gosk

تخصص: HTML، CSS، PHP و JS، طراح قالب و افزونه وردپرس، سئوکار و مقاله نویس

درمورد سوال اول فرقی نداره اما اگه هردوشون تو یه جدول باشن میشه گفت صرفه جویی میشه(از لحاظ تعداد جدول ها و کد نویسی)
در مورد سوال دوم باید بین ID نقشی که تو جدول کاربر وجود داره و آیدی خود نقش که تو جدول نقش ها هست یه ارتباط برقرار کنی.
میتونی برای تایین سطح دسترسی تو جدول نقش ها یه فیلد اضافه کنی که مربوط به سطح دسترسی هست. میتونی به شکل JSON ذخیره کنی

متین طیبی نیا
متین طیبی نیا
@MatinTayebi

تخصص: backend

@asp.gosk
سلام یه خورده گیج شدم برای پاسخ دوم!
اینطوری که شما گفتید بازم نقش کاربر نسبت به گروهی که داره داینامیک نیست

شاید پاسخ شما همین‌جا باشد

متین طیبی نیا
متین طیبی نیا
@MatinTayebi

تخصص: backend

چیزی که من برداشت کردم اینکه در جدول واسط بین کاربران و گروه ها (رابطه این دو جدول چند به چند هستش ) یک فیلد pivot اضافه کنم و تو اون مشخص کنم که کاربر چه نقشی داره ( یک دیتای json از نام کاربر و نقش ان ذخیره کنم )
خیلی ممنون از وقتی که گذاشتید ❤️

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

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