PDA

View Full Version : گفتگو: طراحی دیتابیس



css-man
یک شنبه 10 آذر 1392, 08:24 صبح
دوستان من دارم یه دیتابیس یه cms رو طراحی میکنم
نیاز به همفکری دارم
این سیستم قراره با codeigniter نوشته بشه

multlanguage و multi template هم باشه

من از بخش ادمین شروع کردم جداولی که طراحی کردم رو اینجا مینویسم

نظراتتون رو بگید مرسی



113377

مهرداد سیف زاده
یک شنبه 10 آذر 1392, 09:15 صبح
روشهای متفاوتی وجود داره و میشه گفت برخلاف برنامه‌نویسی که مثلا برای لاگین کاربر چندین راه بیشتر وجود نداره ولی برای همین لاگین ادمین چندین‌هزار روش دیتابیش میشه طراحی کرد.
یه سری اطلاعات عمومی بحث کاربری هست از ادمین گرفته تا user عادی این خصوصیات رو دارن و یه سری خصوصیات فقط مال ادمین هست
مثلا ادمین اصلی یه cms اختصاصی را برای امنیت بیشتر میشه اطلاعات دقیق ورود و خروج رو در دیتابیس ذخیره کرد. این که مرورگر و os چی بوده و ip‌و یه موقعیت زمانی اون. ولی user عادی صرفا تاریخ اخرین زمان لاگین کفایت میکنه. حالا تصویر آواتر و تاریخ تولد چیزی هست که برای تمام کاربران و شامل ادمین هم میشه و جزئیات دقیق ورود و خروج رو میشه به کاربران ادمین اختصاص داد و یک جدول کنار جدول فعلی ساخت تا تا تمام جزئیات ورود و خروج رو ذخیره کنه.
حتی بالاتر شما کاربر ادمین میسازی که توانایی انجام کاری رو داشته باشه یا نه. مثلا روی یه سایت خبری از من خواسته شده بود تا ادمین عادی بسازم که فقط بیاد خبر بزاره و خبرهای خودشو ویرایش کنه. و کاربر ادمین بتونه تبلیغات و تمپیلیت رو تغییر بده. این جا جدول دیگری هم برای خصوصیات کاربری نیازه و حق دسترسی رو میشه تعیین کرد. در لحظه لاگین این خصوصیات دسترسی از دیتابیس برداشته میشه و در session کاربر ذخیره میشه.
پس روشها و متدولوژی‌های طراحی دیتابیس بالاست و میشه گفت بخشی مهمی از حجم کار به طراحی درست دیتابیس ربط داره.

css-man
یک شنبه 10 آذر 1392, 09:58 صبح
مرسی از همفکریتون

منم دقیقا بخش آخری که شما فرمودید رو نیاز دارم

ادمین های مختلف با دسترسی های مختلف

به نظرم یه جدول به نام permission بسازم
و هر ماژولی که ادمین اجازه دسترسی بهش روداره آی دی او ن بخش رو تو این جدول بریزم درسته؟

مهرداد سیف زاده
یک شنبه 10 آذر 1392, 10:45 صبح
البته در کل جدول جدا نمیخواد. شما یه جدول ادمین دارید برای لاگین و خصوصیات ویژه کاربران که یه فیلد اون برای permision‌هست. این فیلد رو نوع text میزارید و تنظینات دسترسی permision بصورت آرایه توی این فیلد ذخیره میشه. البته برای ذخیره آرایه از تابع serialize میشه. به مثال زیر توجه کنید:


$permition = array(
'add_post'=>true,
'delete_post'=>true,
'edit_post'=>true,
'change_templet'=>true
);
$sql = "save the permision update or insert `permisin`='".serialize($permisin)."'";

و در مرحله خوندن هم unserialize میکنید این مقدار رو. کاربر در لحظه لاگین این اطلاعات در session قرار می‌گیره و مثلا وقتی که داره پستی رو حذف میکنه چک میکنه آیا اجازه دسترسی به حذف این پست رو داره. حتی بالاتر جداول ویرایش شما در صفحه وب طوری باشه که بعد از چک کردن permision‌ها اصلا دکمه delete نداشته باشه.

css-man
یک شنبه 10 آذر 1392, 14:37 عصر
این روش روش درستیه؟
بعد از این جدول که تکمیل بشه میخوام جدولی برای زبان داشته باشم
اما هیچ اطلاعاتی ندارم راجع بهش

بنظر خودم توش باید فقط نام اون زبان باشه و id کافیه یا به چیزای بیشتری نیاز هست؟

css-man
یک شنبه 10 آذر 1392, 20:20 عصر
دوستان کسی میدونه بهترین را ه برای سایت چند زبانه چیه؟

مهرداد سیف زاده
یک شنبه 10 آذر 1392, 22:31 عصر
در مورد i18n تحقیق کنید. البته خودم تا بحال باهاش کار نکردم. ولی در فریم‌ورک yii این خصوصیت بصورت توکار وجود داره و راه‌اندازی سایتهای چند زبانه رو راحت کرده. این فناوری بصورتی هست که با تنظیمش مثلا وقتی سایت شما در آدرس mysite.com/fa قرار داره با یه سری css مخصوص و layout مخصوص بالا میاد ولی وقتی دامین سایت به mysite.com/en میره فایل css و layout دیگری رو لود میکنه و شما چندان با تغییر زبان و فیچرهای دیگه درگیر نمیشید.