در مطلب های پیشین سعی کردیم شما را با مفاهیم کتابخانه (فریم ورک) لاراول و آرایه های سراسری و دریافت داده های ورودی بوسیله URL آشنا کنیم. هر برنامه تحت وب چه با پی اچ پی نوشته شده باشد چه با هر زبان دیگری، نیاز به تعامل با پایگاه داده برای ذخیره سازی، واکشی، تغییر، بروز رسانی و پاک کردن داده ها دارد. در این مطلب و چندین و چند مطلب پیش رو می خواهیم نخست اصول کار با کتابخانه PDO در PHP را آموزش دهیم و سپس به آموزش ORM زبان پی اچ پی که  Eloquent نام دارد خواهیم پرداخت.

هدف از آموزش PDO این است که نخست می خواهیم جنبه های متفاوت زبان پی اچ پی را در این دوره آموزش دهیم و همچنین چون لاراول از PDO برای ساخت  Eloquent استفاده کرده است، پس شاید لازم باشد پیش از پرداختن به خود  Eloquent، با PDO آشنا شوید. همچنین می خواهیم به شما آموزش دهیم که چگونه برای پروژه خود یک پایگاه داده طراحی کنید.

فرض کنید از شما به عنوان دانشجو خواسته اند برای پروژه پایانی درس یا تحصیل خود یک سایت با کاربرد و هدف ویژه ای طراحی کنید. آیا اینکه شما با زبان پی اچ پی و کتابخانه PDO آشنا باشید کافی است؟ آیا نیاز به دانش دیگری نیز دارید تا بتوانید پروژه خود را بنویسید؟ برای طراحی سایت ها در کنار دانش لازم برای آشنایی با زبان برنامه نویسی و چگونگی مد نویسی برای پایگاه داده، شما باید با طراحی پایگاه داده نیز آشنا باشید. به عبارت دیگر شما پیش از دست به کد شدن، باید پایگاه داده خود را درون یک برگه یا یک نرم افزار ویژه طراحی کنید.

به عنوان برنامه نویس باید سیستمی که می خواهید درون برنامه خود پیاده سازی کنید را به بشناسید و بدانید چه مولفه ها، افراد، شی ها و عناصری در آن وجود دارند. در مفاهیم طراحی پایگاه داده های رابطه ای، به هر یک از این شی ها یا عناصر سیستم، یک موجودیت گفته می شود. به طور مثال برای ایجاد یک سایت آموزش مجازی و الکترونیک (ELearning Website)، شی ها یا عناصر درون آن شامل دوره ها، عنوان ها، مثال ها و مطلب های رایگان در مورد هر دوره و دانشجوهای هر دوره می شود.

پس از شناخت مولفه های سیستم باید خصوصیت های هر سیستم را شناسایی کنید. به طور مثال هر دوره دارای نام، طول دوره، توضیح در مورد دوره، عنوان دوره و مثال های در مورد دوره است. شکل زیر نمودار موجودیت های متفاوت برای یک سایت آموزشی را نشان می دهد که می توانید خصوصیت های متفاوت هر دوره را ببینید.

هر موجودیت درون سیستم برابر با یک جدول درون پایگاه داده و هر خصوصیت درون یک موجودیت برابر با یک ستون درون جدول پایگاه داده ها است. درون سیستم میان موجودیت ها یک رابطه وجود دارد. به طور مثال هر دوره دارای یک عنوان است و یا هر دانشجو دارای چندین دوره می تواند باشد. بنابراین در طراحی پایگاه داده باید این رابطه ها نیز در نظر گرفته شوند.

در مطلب انواع رابطه میان جدول ها در پایگاه داده رابطه ای در مورد انواع رابطه های میان دو موجودیت صحبت شده است و گفته ایم که به طور کلی سه نوع رابطه یک به یک (One-to-One)، یک به چند (One-to-Many) و چند به چند (Many-to-Many) وجود دارد. ابتدا می بایست مطلب انواع رابطه میان جدول ها در پایگاه داده رابطه ای را بخوانید تا بتوانید توضیح رابطه های متفاوت میان موجودیت های شکل بالا را متوجه شوید.

مثال انواع رابطه میان جدول ها

رابطه میان جدول Course و جدول Subject به صورت یک به چند است، زیرا هر دوره دارای چندین عنوان است ولی هر عنوان یا بهتر بگوییم هر سطر از جدول عنوان متعلق به یک دوره است. رابطه میان جدول های Course و Tutors نیز به صورت یک به چند است زیرا هر دوره می تواند چندین مثال و پست رایگان داشته باشد ولی هر مطلب یا مثال مربوط به محتوای یک دوره است.

میان جدول های Courses و Student یک رابطه چند به چند وجود دارد زیرا هر دانشجو می تواند چندین دوره داشته باشد و هر دوره نیز می تواند توسط چندین دانشجو گرفته شده باشد. برای ایجاد یک رابطه چند به چند، باید از جدول سومی به نام جدول میانی یا جدول Pivot  یا جدول الحاق (Join Table) استفاده شود. در شکل زیر جدول Enrollment به عنوان جدول میانی است. جدول های میانی باید به ازای هر کدام از جدول های درون رابطه چند به چند، یک ستون به عنوان کلید خارجی به هر کدام داشته باشند.

در شکل بالا ستون های CourseId و StudentId به عنوان کلید خارجی است. همچنین ستون دیگری درون جدول Enrollment وجود دارد که زمان گرفتن دوره توسط دانشجو را نگه می دارد. بنابراین در طراحی یک سایت شما به جز داشتن توانایی برای نوشتن کدها و حل مسئله های درون پروژه و داشتن توانایی برای نوشتن کوئری های SQL، باید سیستمی که می خواهید پیاده سازی کنید را بشناسید و بدانید چه موجودیت هایی با چه خصوصیت هایی و چه رابطه هایی میان آنها وجود دارد، سپس خواهید دید که نوشتن کوئری ها ساده خواهد.

بخش دیگر یک پروژه که با پایگاه داده درگیر است، چگونگی نمایش داده ها به کاربر یا دریافت داده از کاربر است. در مطلب های پیشین گفتیم که در مدل MVC، بخش نما که شامل کدهای اچ تی ام ال و موتور Blade است در لاراول برای نمایش داده ها استفاده می شوند. به طور کلی در برنامه های وب از فرم های اچ تی ال برای دریافت داده ها و نمایش آنها استفاده می شود. بنابراین لازم است تا در مطلب های پیش رو و در کنار آموزشPDO  شما با چگونگی ترکیب فرم های اچ تی ام ال و پی اچ پی آشنا شوید.

در تمامی سایت ها باید اسکریپت هایی برای احراز هویت کاربران باشد، به گونه ای که بخشی از ویژگی های سایت تنها برای کاربران عضو قابل نمایش است. پس باید اسکریپت هایی به زبان پی اچ پی برای ثبت نام، تغییر گذرواژه، تغییر پروفایل کاربری، بازیابی گذروژه وجود داشته باشد. پس نتیجه می گیریم که جدولی باید باشد که این داده ها را در خودش نگه داری کند.