روابط در ساختار دیتابیس‌ها
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 6 دقیقه

روابط در ساختار دیتابیس‌ها

در دنیای واقعی ما روابط مختلفی را با چیزها و افراد متفاوت داریم. هر کدام از این روابط نیز دارای شکل منحصر به فردی هستند. ما با دوستان‌مان به گونه‌ای در ارتباط هستیم و با خانواده‌مان به گونه‌ای دیگر: برای مثال شما و پدرتان یک رابطه به حساب می‌آیید. رابطه شما یک رابطه والد-فرزند است که در آن شما تنها یک پدر داشته اما پدرتان ممکن است چندین فرزند داشته باشد. در یک مثال دیگر می‌توان به رابطه شما و معلم‌تان اشاره کرد. یک معلم به شما و به چندین دانش آموز دیگر درس می‌دهد و شما نیز به عنوان یک دانش آموز از چندین معلم آموزش خواهید دید.

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

در این مطلب اختصاصی از وبسایت راکت قصد داریم با انواع مختلف از روابط در دیتابیس‌های رابطه‌ای آشنا شویم. پس تا اتمام این مقاله با ما همراه باشید.

روابط در دیتابیس‌های رابطه‌ای

هر گونه ارتباط یا وابستگی میان دو یا چند موجودیت یا entity در یک بانک اطلاعاتی را رابطه یا relationship می‌گویند. برای مثال برای یک معلم و دانش آموز «درس دادن» یک رابطه به حساب می‌آید و در نتیجه براساس برنامه‌ای که ما می‌نویسیم روابط مختلفی میان این دو می‌تواند شکل بگیرد.

اما سوال اصلی این است که چگونه روابط شکل می‌گیرد و به عنوان یک توسعه‌دهنده چگونه می‌توانیم این روابط را در دیتابیس‌مان پیاده‌سازی کنیم؟

تصور کنید یک موجودیت تحت عنوان Customer با مشخصات زیر در اختیار داریم:

Customer_id, Name. City, Phone

در کنار آن یک موجودیت دیگر تحت عنوان Account نیز با مشخصات زیر وجود دارد:

Account_no, Type, Balance

در این مثال ما اطلاعات مربوط به هر کدام از این موجودیت‌ها را در جداول مختلفی ذخیره خواهیم کرد. پایه‌ای‌ترین روش برای ایجاد ارتباط میان دو جدول استفاده کردن از کلید اصلی یا Primary Key است. در این مثال کلید اصلی ما در جدول مربوط به Customer و در فیلد Customer_id قرار دارد. ما باید این کلید اصلی را در جدول مربوط به Account ذخیره کنیم. در این حالت Customer_id به عنوان یک کلید خارجی برای جدول Account در نظر گرفته می‌شود.

به این شکل شما می‌توانید در بین جداول مختلف، روابط را ایجاد کنید. در بانک‌های اطلاعاتی رابطه‌ای، سه نوع رابطه کلی به شکل زیر وجود دارد:

  • رابطه یک به یک
  • رابطه یک به چند – چند به یک
  • رابطه چند به چند

رابطه یک به یک

در این رابطه هر رکورد از یک جدول تنها به یک رکورد از جدول دیگری ارتباط پیدا می‌کند. برای مثال اگر دو جدول Person با مشخصات زیر:

Id, Name, Age, Address

و جدول Passport با مشخصات:

Passport_id, Passport_no

وجود داشته باشد، هر رکورد (هر فرد) تنها می‌تواند یک پاسپورت (یک رکورد از جدول Passport) را در اختیار داشته باشد. در نتیجه این رابطه یک رابطه «یک به یک» به حساب آمده و هر فرد می‌تواند یک پاسپورت داشته باشد.

چنین روابطی کمتر مورد استفاده قرار گرفته و تنها زمانی استفاده می‌شود که اطلاعات مربوط به یکی از جداول محرمانه باشد. در غیر اینصورت نیازی به ذخیره اطلاعات پاسپورت در یک جدول دیگر نخواهیم داشت چرا که به راحتی می‌توانیم فیلد Passport_no را در خود جدول Person پیاده‌سازی کنیم. اما از آنجایی که اطلاعات این فیلد محرمانه بوده و نیازمند حفاظت بیشتر است در یک جدول دیگر پیاده‌سازی می‌شود. بنابراین در چنین حالتی برای ایجاد امنیت بیشتر،‌ داده‌های مورد نیاز را در یک جدول دیگر ذخیره‌سازی می‌کنیم.             

رابطه یک به چند و چند به یک

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

برای مثال ما می‌توانیم یک مشتری داشته باشیم که روی وبسایت چندین حساب مختلف دارد. در این حالت هر مشتری می‌تواند چندین حساب داشته باشد اما هر حساب در نهایت مربوط به یک مشتری است. پس رابطه مشتری با حساب یک رابطه یک به چند و یا به شکلی دیگر رابطه حساب با مشتری یک رابطه چند به یک محسوب می‌شود.

رابطه چند به چند

در این رابطه هر رکورد از جدول اول می‌تواند با چند رکورد از جدول دوم، و هر رکورد از جدول دوم می‌تواند با چند رکورد از جدول اول در ارتباط باشد. یک رابطه چند به چند را می‌تواند مانند داشتن چند رابطه یک به چند در کنار هم مشاهده کرد که در نهایت جداول مورد نظر با همدیگر لینک خواهند شد.

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

معرفی دوره آموزشی

برای درک بهتر تمام این موارد و مشاهده آن‌ها در عمل به شما پیشنهاد می‌کنم دوره آموزشی «آموزش MySQL» را مشاهده کنید. در فصل پنجم این دوره آموزشی ما به صورت کامل تمام روابط بین جداول را بررسی کرده‌ایم و همچنین هر کدام را به صورت عملی پیاده‌سازی نموده ‌ایم.

جدای از روابط، در این دوره آموزشی با مفاهیم بسیار مهم و اساسی دیتابیس مانند:

  • کلید اصلی
  • کلید خارجی
  • دستورات SQL
  • مفاهیم مربوط به Join

و... آشنا خواهید شد.

مقالات دیگر

برای آشنایی بیشتر با دیتابیس می‌توانید از مقالات موجود در دسته‌بندی دیتابیس استفاده کنید. در این دسته‌بندی موضوعات بسیار زیادی در ارتباط با دیتابیس‌های رابطه‌ای و غیر رابطه‌ای بیان شده که همگی می‌توانند به نوعی کاربردی و آموزنده باشند.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
5 از 1 رای

/@arastoo
ارسطو عباسی
کارشناس تولید و بهینه‌سازی محتوا

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

دیدگاه و پرسش

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

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

ارسطو عباسی

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