در پایگاه دادهها، انواع روابط بین جداول یکی از مهمترین مفاهیم برای طراحی ساختار پایگاه داده است. این روابط به سه دسته اصلی یک به یک (1:1)، یک به چند و چند به چند تقسیم میشوند. در ادامه، هر یک از این روابط را به تفصیل توضیح میدهیم:
1. رابطه یک به یک
رابطه یک به یک به معنای آن است که هر رکورد در یک جدول فقط میتواند با یک رکورد از جدول دیگر در ارتباط باشد و بالعکس. این نوع رابطه معمولاً برای ذخیره جزئیات بیشتری درباره یک موجودیت استفاده میشود که نمیخواهیم همه اطلاعات را در یک جدول قرار دهیم. به عنوان مثال، اگر یک جدول برای کاربران و یک جدول دیگر برای اطلاعات کاربری داشته باشیم، هر کاربر تنها یک اطلاعات کاربری مرتبط دارد و بالعکس.
مثال:
- هر کاربر یک کارت شناسایی دارد و هر کارت شناسایی تنها به یک کاربر تعلق دارد.
پیادهسازی این نوع رابطه میتواند به صورت یک کلید خارجی در یکی از جداول باشد که به جدول دیگر ارجاع میدهد.
2. رابطه یک به چند
در این نوع رابطه، یک رکورد در یک جدول میتواند با چندین رکورد در جدول دیگر مرتبط باشد، اما هر رکورد از جدول دوم تنها به یک رکورد از جدول اول تعلق دارد. این نوع رابطه بهویژه در مواردی کاربرد دارد که نیاز به تعریف یک موجودیت کلی و سپس مشخص کردن جزئیات بیشتری از آن داریم. این نوع رابطه معمولاً با استفاده از کلید خارجی در جدول دوم پیاده میشود.
مثال:
- یک کتاب میتواند چند صفحه داشته باشد، اما هر صفحه تنها به یک کتاب تعلق دارد.
- یک استاد میتواند چند دانشجو را راهنمایی کند، اما هر دانشجو تنها یک استاد راهنما دارد.
3. رابطه چند به چند
رابطه چند به چند پیچیدهتر از دو نوع رابطه قبلی است و به حالتی اشاره دارد که هر رکورد از یک جدول میتواند با چندین رکورد از جدول دیگر در ارتباط باشد و بالعکس. برای پیادهسازی این نوع رابطه، معمولاً از یک جدول واسط (که جدول پیوندی یا junction table نامیده میشود) استفاده میشود. این جدول واسط دارای دو یا چند کلید خارجی است که به دو جدول اصلی ارجاع میدهند.
مثال:
- هر کتاب میتواند توسط چندین نویسنده نوشته شود و هر نویسنده نیز میتواند چندین کتاب بنویسد.
- در یک سیستم آموزش آنلاین، هر دانشجو میتواند در چندین دوره آموزشی شرکت کند و هر دوره آموزشی نیز میتواند دانشجویان مختلفی داشته باشد.
در جدول پیوندی، معمولاً از کلیدهای خارجی استفاده میشود که به جداول اصلی اشاره دارند. به عنوان مثال، برای رابطه بین دانشجویان و دورههای آموزشی، جدولی به نام دانشجو_دوره میسازیم که در آن دو ستون وجود دارد: یکی برای شناسه دانشجو و دیگری برای شناسه دوره.
مثال :
رابطه یک به یک (1:1) هر کتاب دارای یک عنوان و یک قیمت می باشد.
رابطه یک به چند (1:n) یک کتاب می تواند چند صفحه داشته باشد و هر صفحه متعلق به یک کتاب است.
رابطه چند به چند (n:n) هر کتاب می تواند n نویسنده داشته باشد و هر نویسنده می تواند m کتاب بنویسد.