برنامه نویس #لاراول / هکر شیطون / که گاهی هم از تجربیاتش می نویسه !
اشتباهات رایج در طراحی دیتابیس - قسمت اول
سلام ، اخیرا دارم روی یک پروژه طراحی دیتابیس کار میکنم و خوب تصمیم گرفتم در همین راستا تجربیات خودم رو در خصوص طراحی دیتابیس در اختیار شما دوستان قرار بدهم ، تا شاید باعث بشه شما خیلی از اشتباهاتی که من انجام دادم رو انجام ندهید
شما به عنوان یک طراح پایگاه داده میتوانید خیلی از مشکلاتی که در آینده برای محصول دردسر ساز میشود را در این مرحله کنترل کنید ، البته همیشه مشکلاتی دردسر سازی هستند که غیرقابل پیش بینی هستند ولی یک طراح پایگاه داده حرفه ای میتواند حجم این مشکلات را به حداقل برساند
برای این که اهمیت توجه به طراحی پایگاه داده را درک کنید بزارید از این جا شروع کنم که وقتی اصلا به این مسائل توجه نمی کنید و یا کم توجه میکنید در آینده با چه مشکلاتی مواجه خواهید بود :
در بالا دو نمونه ای از طراحی یک دیتابیس رو مشاهده میکنید ، به عنوان مثال ما در بالا دو مدل جدول رو پیاده سازی کردیم ، در حالت اول که حالت بهتری هست یک جدول داریم به نام User و یک جدول داریم به نام Meta ، در جدول User اطلاعات اولیه کاربر رو ذخیره میکنیم و در جدول Meta اطلاعات اضافی کاربر رو ذخیره میکنیم
حال شاید برای شما سئوال باشه :
خوب چرا تمام اطلاعات یک کاربر رو در یک جدول ذخیره نکنیم ؟
در پاسخ به این سئوال باید بگم که خوب شما این موضوع رو در نظر بگیرید که ممکن است یک یوزر اطلاعات زیادی رو داشته باشه و در اینده شما مجبور بشید بیشتر از 30 مورد اطلاعات از یک یوزر رو ذخیره کنید و برخی از این اطلاعات مثل امتیاز ، وضعیت و... نیز ممکن است دائم در حال تغییر باشد
اگر مثل مدل دوم بخواهید کار کنید
مشکل اول - ایجاد محدودیت :
عملنا اگر 20 تا اطلاعات از یوزر رو فکر کرده باشید و در دیتابیس فیلد اضافه کرده باشید برای 21 مین فیلد چون فیلدی رو در نظر نگرفتید با مشکل مواجه خواهید شد و برای همین تغییر ساده باید دیتابیس رو دوباره تغییر بدهید
مشکل دوم - کاهش کارایی :
وقتی بخواهید مثلا ID کاربر Alireza رو دریافت کنید و همچنین امتیاز کاربر Alireza رو هم بعدش تغییر دهید ، زمانی که Get و Update هر دو داره روی یک جدول انجام میشه عملنا پرفورمنس سیستم رو کاهش میده و گاهی اوقات وقتی این کار در ابعاد زیاد قراره انجام بشه باعث مسائلی مثل مصرف منابع بالا هم میشه
پس عملنا بهتر دیتایس تون رو به جایی که به این صورت :
کار کنید ، بهتر است دیتابیس خودتون رو به این صورت :
تبدیل کنید ، به این کاری که من انجام دادم : Database Normalization می گویند ، وقتی شما یک پایگاه داده رو طراحی میکنید در گام بعدی باید روی نرمال سازی آن کار کنید ، اگر موقع طراحی دیتابیس جلوی این مشکل رو بگیرید ، در آینده مشکلات غیرقابل پیش بینی کمتری رو خواهید داشت
همچنین به کاری که من برای جدول کاربران انجام دادم Redundancy یا «افزونگی» می گویند ، که اگر مایل هستید باز در این خصوص بیشتر بدانید میتوانید در خصوص Redundancy در SQL مقالات بیشتری را بخوانید
نتیجه گیری :
سعی کنید قبل از شروع طراحی پایگاه داده ، برای طراحی پایگاه داده برنامه ریزی کنید ، یا ساده تر کمی آینده دیتابیس خودتون رو پیش بینی کنید :
فرضا اگر یک یوزر دارید که 20 تا اطلاعات از آن را میخواهید بگیرید ، به این نکته دقت کنید که ممکن اطلاعات شما 25 تا بشه و جداول خودتون رو جوری طراحی کنید که اگر اطلاعات این گونه تغییر کرد ، مجبور نشد ، دوباره بعضی از بخش ها رو طراحی کنید
و بعد از این کد دیتابیس خودتون رو طراحی کردید روی Database Normalization کار کنید ، ما در این خصوص در مقالات بعدی بیشتر صحبت خواهیم کرد ، در این مقاله به یکی از آیتم های آن یعنی Redundancy اشاره کردیم ، در مقالات بعدی در خصوص آیتم های دیگر Database Normalization صحبت خواهیم کرد .
مطلبی دیگر از این انتشارات
لاراول ۵/۵ و یک برنامهنویس خجسته
مطلبی دیگر از این انتشارات
نحوه فارسی سازی slug در لاراول با پکیج cviebrock/eloquent-sluggable
مطلبی دیگر از این انتشارات
نصب لاراول روی لوکال هاست لینوکسی