متین طیبی نیا
2 سال پیش توسط متین طیبی نیا مطرح شد
4 پاسخ

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

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


ثبت پرسش جدید
ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 2 سال پیش آپدیت شد
1

برای اینکه هر نقش تو گروه های مختلف قابلیت های خاص خودش رو داشته باشه باید فیلد دسترسی ها رو به جدول گروه ها اضافه کنی. میتونی مثل همون چیزی که گفتم اینبار هم به شکل 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
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 2 سال پیش مطرح شد
1

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


متین طیبی نیا
تخصص : nodejs
@MatinTayebi 2 سال پیش مطرح شد
0

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


ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 2 سال پیش آپدیت شد
1

برای اینکه هر نقش تو گروه های مختلف قابلیت های خاص خودش رو داشته باشه باید فیلد دسترسی ها رو به جدول گروه ها اضافه کنی. میتونی مثل همون چیزی که گفتم اینبار هم به شکل 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 استفاده کنی


متین طیبی نیا
تخصص : nodejs
@MatinTayebi 2 سال پیش مطرح شد
1

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


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

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