درک کامل انواع رابطه در دیتابیس
درک و طراحی روابط بین جداول(table) در یک پایگاه داده رابطه ای مانند SQL Server بسیار مهم است. در یک پایگاه داده رابطهای، هر جدول با استفاده از کلید اصلی و کلید خارجی می تواند به جدول دیگری متصل میشود.
اصطلاح رابطه(relation) گاهی اوقات برای اشاره به یک جدول در یک پایگاه داده رابطه ای استفاده می شود. با این حال، بیشتر برای توصیف روابطی که بین جداول در یک پایگاه داده رابطه ای وجود دارد استفاده می شود.
رابطه(relationship) بین دو جدول پایگاه داده فرض میگیرد که یکی از آنها دارای یک کلید خارجی است که به کلید اصلی جدول دیگر ارجاع میدهد.
هر جدول میتواند به چهار روش به جدول دیگری متصل شود:
- One-to-One
- One-to-Many
- Many-to-Many
- Self-Referencing
قبل از توضیح این روابط بهتر است بفهمیم که منظور از کلید-اصلی و کلید-خارجی چیست.
دوره پیشنهادی: دوره آموزش زبان SQL
# کلید اصلی دیتابیس چیست؟
کلید اصلی(primary key) یک ستون جدول است که برای شناسایی منحصر به فرد هر رکورد تعیین شده است. یک کلید اصلی به عنوان یک شناسه منحصر به فرد برای تجزیه سریع داده ها در جدول استفاده می شود. یک جدول نمی تواند بیش از یک کلید اصلی داشته باشد.
یک کلید اصلی باید ویژگی های زیر را داشته باشد:
- باید برای هر ردیف داده یک مقدار منحصر به فرد داشته باشد.
- نمیتواند مقدار null داشته باشد.
- هر ردیف باید یک مقدار برای کلید اصلی داشته باشد.
مثلا در تصویر زیر که اطلاعات دانش آموزان را ذخیره کرده ایم، فیلد StudentId کلید اصلی است. از این فیلد برای شناسایی دانش آموزان استفاده میشود:
مقاله پیشنهادی: آموزش مدیریت دیتابیسهای ردیس
# کلید خارجی دیتابیس چیست؟
کلید خارجی(foreign key) یک یا چند ستون در یک جدول پایگاه داده رابطهای است که پیوندی بین دادهها در دو جدول فراهم میکند. اکثر جداول در یک سیستم پایگاه داده رابطه ای به مفهوم کلید خارجی پایبند هستند. کلیدهای خارجی داده های یک جدول را به داده های جدول دیگر متصل میکنند.
هر کلید خارجی باید به یک کلید اصلی متصل شود. به مبدا کلید خارجی جدول والد(parent table) و به مقصد کلید خارجی جدول فرزند(child table) گفته میشود. ستونی که به عنوان یک کلید خارجی عمل می کند باید دارای یک مقدار متناظر در جدول مقصد خود باشد.
فرض کنید ما دو جدول به نام های customer
و order
داریم. ما می توانیم از یک کلید خارجی برای ایجاد رابطه بین آنها استفاده کنیم. در جدول سفارش، کلیدی ایجاد می کنیم که به مشتری (یعنی CUSTOMER_ID) در جدول دیگر اشاره می کند. CUSTOMER_ID در جدول order به کلید خارجی تبدیل می شود که به کلید اصلی در جدول customer ارجاع می دهد.
مقاله پیشنهادی: آشنایی با پایگاه های داده رابطه ای
# رابطه یک به یک در دیتابیس
در رابطه One-to-One، یک رکورد از جدول اول به صفر یا یک رکورد جدول دیگر متصل می شود. به عنوان مثال، هر کارمند در جدول Employee یک ردیف مربوطه در جدول EmployeeDetails خواهد داشت که جزئیات گذرنامه فعلی را برای آن کارمند خاص ذخیره می کند. بنابراین، هر کارمند صفر یا یک رکورد در جدول EmployeeDetails خواهد داشت. به این رابطه یک به یک می گویند.
در بالا، ستون EmployeeID کلید اصلی و همچنین ستون کلید خارجی در جدول EmployeeDetails است که به EmployeeID جدول Employee مرتبط است. این رابطه یک به یک را تشکیل می دهد.
مقاله پیشنهادی: تفاوت نرمافزار رایگان و منبع باز
# رابطه یک به چند در دیتابیس
رابطه One-to-Many متداول ترین رابطه بین جداول است. یک رکورد از یک جدول را می توان به صفر یا چند ردیف در جدول دیگر پیوند داد.
بیایید مثالی از جدول Employee و Address بزنیم. جدول Employee سوابق کارمندان را که در آن EmployeeID کلید اصلی است ذخیره می کند. جدول Address نشانی های کارمندانی را که در آن AddressID یک کلید اصلی و EmployeeID یک کلید خارجی است، نگهداری می کند. هر کارمند یک رکورد در جدول Employee خواهد داشت. هر کارمند می تواند آدرس های زیادی مانند آدرس خانه، آدرس دفتر، آدرس دائمی و غیره داشته باشد.
جداول Employee و Address توسط ستون EmployeeID به هم مرتبط می شوند. این یک کلید خارجی در جدول Address است که به کلید اصلی EmployeeID در جدول Employee پیوند دارد. بنابراین، یک رکورد از جدول Employee می تواند به چندین رکورد در جدول Address اشاره کند. این یک رابطه یک به چند است.
# رابطه چند به چند در دیتابیس
رابطه چند به چند به شما امکان می دهد هر سطر در یک جدول را به سطرهای زیادی در جدول دیگر و بالعکس مرتبط کنید. به عنوان مثال، یک کارمند در جدول Employee می تواند مهارت های زیادی از جدول EmployeeSkill داشته باشد و همچنین، یک مهارت را می توان با یک یا چند کارمند مرتبط کرد.
شکل زیر رابطه چند به چند را بین جدول Employee و SkillDescription با استفاده از جدول EmployeeSkill نشان می دهد.
هر کارمند در جدول Employee می تواند یک یا چند مهارت داشته باشد. به طور مشابه، یک مهارت در جدول SkillDescription را می توان به بسیاری از کارمندان مرتبط کرد. این باعث ایجاد یک رابطه چند به چند می شود.
در مثال بالا، EmployeeSkill جدول رابطی است که شامل ستونهای کلید خارجی EmployeeID و SkillID است تا رابطه چند به چند بین جدول Employee و SkillDescription ایجاد کند. به صورت جداگانه، Employee و EmployeeSkill یک رابطه یک به چند دارند و جداول SkillDescription و EmployeeSkill رابطه یک به چند دارند. اما، آنها با استفاده از جدول رابط EmployeeSkill، رابطه چند به چند را تشکیل می دهند.
# رابطه خود ارجاعی در دیتابیس
یک رابطه خود ارجاع(self referencing) (همچنین به عنوان یک رابطه بازگشتی(recursive) نیز شناخته می شود) در یک پایگاه داده زمانی اتفاق می افتد که یک ستون در یک جدول به ستون دیگری در همان جدول مربوط می شود. در چنین رابطه ای فقط یک جدول درگیر است. به عنوان مثال، جدول Employee حاوی اطلاعاتی در مورد کارمندان و مدیران آنها است، اما خود مدیران نیز کارمند هستند.
# نتیجه گیری
این مقاله انواع مختلف روابط موجود در پایگاه داده را مورد بحث قرار داد: روابط یک به یک، یک به چند، چند به چند، و روابط خود ارجاع.