انواع Join در پایگاه داده‌های رابطه‌ای

مقدمه

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

مفهوم Join

Join به معنی ترکیب داده‌ها از دو یا چند جدول بر اساس یک شرط مشترک است. معمولاً این شرط، شباهت مقادیر در ستون‌های خاصی از جداول مختلف است. Joinها کمک می‌کنند که بتوانیم روابط بین جداول مختلف را استخراج کنیم.

انواع Join

1. Inner Join (پیوست داخلی)

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

مثال:

فرض کنید دو جدول دانشجویان و دوره‌ها داریم:

جدول دانشجویان:

شماره دانشجویی نام
101 علی محمدی
102 سارا احمدی

جدول دوره‌ها:

شماره دانشجویی نام دوره
101 ریاضیات 1
103 فیزیک 1

در Inner Join، فقط رکوردهایی بازگردانده می‌شوند که شماره دانشجویی هم در جدول دانشجویان و هم در جدول دوره‌ها وجود داشته باشد. نتیجه Inner Join به شکل زیر خواهد بود:

شماره دانشجویی نام نام دوره
101 علی محمدی ریاضیات 1

2. Left Join (پیوست چپ) یا Left Outer Join

Left Join تمام رکوردهای جدول سمت چپ (اولین جدول) را همراه با رکوردهای تطابق یافته از جدول سمت راست بازمی‌گرداند. اگر رکوردی در جدول سمت راست وجود نداشته باشد، مقادیر تهی (NULL) در آن قسمت قرار می‌گیرد.

مثال:

با استفاده از مثال قبلی، نتیجه Left Join جدول دانشجویان و دوره‌ها به این شکل خواهد بود:

شماره دانشجویی نام نام دوره
101 علی محمدی ریاضیات 1
102 سارا احمدی NULL

همان‌طور که مشاهده می‌کنید، رکورد مربوط به دانشجوی 102، حتی با وجود این‌که در جدول دوره‌ها نیست، در خروجی ظاهر شده و مقادیر نام دوره برای او تهی (NULL) است.

3. Right Join (پیوست راست) یا Right Outer Join

Right Join مشابه Left Join است، اما تمام رکوردهای جدول سمت راست (دومین جدول) را بازمی‌گرداند و رکوردهای تطابق یافته از جدول سمت چپ را اضافه می‌کند. اگر رکوردی در جدول سمت چپ وجود نداشته باشد، مقادیر تهی (NULL) در آن قسمت قرار می‌گیرد.

مثال:

نتیجه Right Join همان دو جدول دانشجویان و دوره‌ها به شکل زیر خواهد بود:

شماره دانشجویی نام نام دوره
101 علی محمدی ریاضیات 1
NULL NULL فیزیک 1

در اینجا، رکوردی که فقط در جدول دوره‌ها وجود دارد (فیزیک 1)، با مقادیر NULL برای ستون‌های دانشجویان بازگردانده شده است.

4. Full Join (پیوست کامل) یا Full Outer Join

Full Join هر دو جدول را به‌طور کامل ترکیب می‌کند. در Full Join، تمام رکوردهای هر دو جدول بازگردانده می‌شوند، حتی اگر تطابقی بین آنها وجود نداشته باشد. اگر برای یک رکورد در جدول دیگر تطابقی وجود نداشته باشد، مقادیر تهی (NULL) نمایش داده می‌شود.

مثال:

نتیجه Full Join برای جداول دانشجویان و دوره‌ها به شکل زیر خواهد بود:

شماره دانشجویی نام نام دوره
101 علی محمدی ریاضیات 1
102 سارا احمدی NULL
NULL NULL فیزیک 1

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

5. Cross Join (پیوست ضرب دکارتی)

Cross Join یا ضرب دکارتی، تمام ترکیبات ممکن از رکوردهای دو جدول را بازمی‌گرداند. در این نوع Join، هیچ شرطی برای تطابق بین جداول وجود ندارد و به ازای هر رکورد از یک جدول، تمامی رکوردهای جدول دیگر ترکیب می‌شوند.

مثال:

با Cross Join جداول دانشجویان و دوره‌ها، نتیجه به شکل زیر خواهد بود:

شماره دانشجویی نام نام دوره
101 علی محمدی ریاضیات 1
101 علی محمدی فیزیک 1
102 سارا احمدی ریاضیات 1
102 سارا احمدی فیزیک 1

تعداد رکوردهای بازگردانده‌شده برابر با حاصل ضرب تعداد رکوردهای دو جدول است.

6. Self Join (پیوست خودی)

Self Join نوع خاصی از Join است که در آن یک جدول با خودش پیوست می‌شود. این نوع پیوست معمولاً زمانی استفاده می‌شود که بخواهیم روابط داخلی در یک جدول را استخراج کنیم. برای انجام Self Join، لازم است که از نام مستعار (Alias) برای جدول استفاده کنیم تا بتوانیم آن را به خودش پیوست دهیم.

مثال:

فرض کنید جدولی از کارمندان داریم که شامل مدیر هر کارمند نیز باشد:

شماره کارمند نام شماره مدیر
101 علی محمدی NULL
102 سارا احمدی 101
103 رضا حسینی 102

با Self Join می‌توانیم مدیران هر کارمند را پیدا کنیم. نتیجه Self Join به شکل زیر خواهد بود:

نام کارمند نام مدیر
سارا احمدی علی محمدی
رضا حسینی سارا احمدی

نتیجه‌گیری

Joinها ابزاری قدرتمند در پایگاه داده‌های رابطه‌ای هستند که به ما امکان می‌دهند داده‌های پراکنده در جداول مختلف را با یکدیگر ترکیب کرده و تحلیل‌های دقیق‌تری انجام دهیم. انتخاب نوع مناسب Join بر اساس نیازهای خاص هر عملیات، اهمیت زیادی دارد. Inner Join برای استخراج رکوردهای تطابق یافته، Left و Right Join برای نمایش رکوردهای یک‌طرفه، Full Join برای ترکیب کامل جداول، Cross Join برای تولید تمامی ترکیبات ممکن، و Self Join برای تحلیل روابط داخلی در یک جدول استفاده می‌شود.