پایگاه داده رابطه ای Relational Database
پایگاه داده رابطه ای یا Relational Database چیست؟
پایگاه داده رابطه ای (Relational Database) نوعی پایگاه داده براساس مدل رابطه ای (Relational Model) دادههاست. در این مدل، دادهها در قالب تعدادی جدول (Table) نگهداری میشوند. به این جداول، رابطه (Relation) نیز گفته میشود. هر جدول شامل تعدادی ستون (Column) و ردیف (Row) میباشد. به ستونها، ویژگی (Attribute) و به ردیفها رکورد (Record) یا چندتایی (تاپل یا Tuple) نیز گفته میشود.
مهمترین مفاهیم پایگاهدادههای رابطهای
معمولا هر جدول (یا رابطه)، مربوط به یک نوع موجودیت (نظیر محصول، کارمند، دانشجو و …) میباشد و هر ردیف از آن نمایانگر نمونهای از این نوع موجودیت (نظیر محصولی با نام و مدل مشخص) و ستونها هم مقادیر ویژگیها (نظیر قیمت) را برای نمونههای مختلف موجودیت موردنظر نگهداری میکنند. مقادیر مجاز برای هر ویژگی میتواند توسط یک دامنه محدود شود. برای مثال ویژگی جنسیت میتواند به مجموعه دامنه {“مرد” و “زن”} محدود شود.
کلید اصلی (Primary Key) به ویژگی یا مجموعهای از ویژگیها در یک رابطه گفته میشود که میتواند یک رکورد را به صورت منحصربفرد مشخص کند. در واقع مقادیر کلیدهای اصلی هرگز در رکوردهای یک رابطه تکرار نمیشوند. برای مثال، کد دانشجویی برای رابطهای که اطلاعات مربوط به دانشجویان را نگهداری میکند (تصویر فوق) گزینه مناسبی برای کلید اصلی به شمار میرود.
کلید خارجی (Foreign Key) فیلدی در یک جدول است که به طور یکتا ردیفی از یک جدول دیگر یا همان جدول را مشخص میکند. به عبارت بهتر کلید خارجی به عنوان یک ویژگی در جدولی ثانویه تعریف میشود و با کلید اصلی یا کلیدی یکتا (یک ویژگی با مقادیر غیرتکراری) از جدول اولیه منطبق میشود و به این ترتیب میان ردیفهای دو جدول ارتباط ایجاد میکند. برای مثال تصور کنید در جدولی به نام People اطلاعات مشتریان یک شرکت با کلید اصلی PID و در جدولی دیگر به نام Order اطلاعات مربوط به کالاهای سفارش داده شده توسط تمام مشتریان با کلید اصلی OID نگهداری میشود. برای اینکه در جدول Order بتوانیم تشخیص دهیم هر کالا توسط چه فردی سفارش داده شده است کافی است PID فرد سفارش دهنده را نیز به این جدول اضافه کنیم. در این حالت ویژگی PID در جدول دوم یک کلید خارجی است.
رابطههایی که در خود دادهها را نگهداری میکنند در قالب Table پیادهسازی میشوند و به رابطههای اصلی (یا Base Relations) موسوم هستند. در مقابل، رابطههایی نیز وجود دارند که دادهای را نگهداری نمیکنند بلکه آنها را با انجام اعمالی روی رابطههای اصلی ایجاد میکنند. به این نوع رابطهها، رابطههای مشتق شده (یا Derived Relations) گفته میشود و در قالب دید (View) ها و پرس و جو (Query) ها پیادهسازی میشوند. ممکن است رابطههای مشتق شده اطلاعات خود را از یک یا چند رابطه دریافت کنند.
عملگرهای رابطهای
پرس و جوهایی که روی پایگاهدادههای رابطهای انجام میشود براساس جبر رابطهای (Relational Algebra) شکل گرفتهاند. در جبر رابطهای هشت عملگر پرکاربرد وجود دارد که حاصل آنها در قالب یک رابطه و به صورت زیر تعریف میشود. توجه داشته باشید برای عملگرهای اجتماع، اشتراک و تفاضل نکته قابل توجه در مورد رابطههایی که به عنوان عملوند استفاده میشود اینست که این رابطهها باید دارای مجموعه ویژگیهای یکسانی باشند.
- عملگر اجتماع (Union): این عملگر دوتایی (باینری یا دو عملوندی) بوده و شامل تمام تاپلهای موجود در عملوندهایش خواهد بود. در رابطه حاصل، ردیفهای تکراری حذف میشوند.
- عملگر اشتراک (Intersection): حاصل این عملگر دوتایی شامل مجموعه تاپلهایی خواهد بود که در هر دو رابطه مشترک هستند.
- عملگر تفاضل (Difference): حاصل این عملگر دوتایی شامل تاپلهایی از رابطه اول خواهد بود که در رابطه دوم وجود ندارند.
- عملگر ضرب دکارتی (Cartesian Product): هر تاپل حاصل از این عملگر دوتایی با الحاق یک تاپل از رابطه اول و یک تاپل از رابطه دوم شکل میگیرد.
- عملگر انتخاب (Selection): عملگری یکانی است که تنها تاپلهایی از رابطه خود را برمیگرداند که شرط یا معیار خاصی را برآورده میکنند.
- عملگر تصویر (Projection): عملگری یکانی است که تنها ویژگیهای مشخص شده را از تاپلهای موجود استخراج میکند.
- عملگر پیوند (Join): رایجترین نوع این عملگر به پیوند طبیعی (Natural Join) مشهور است. رابطه حاصل از این عملگر دوتایی شامل تمام ویژگیهای موجود در رابطههای دو عملوندش میباشد و با الحاق تاپلهایی از دو رابطه که روی ویژگیهای مشترکشان مقادیر یکسان دارند شکل میگیرد.
- عملگر تقسیم (Division): حاصل این عملگر دوتایی تنها شامل ویژگیهایی از رابطه اول خواهد بود که در رابطه دوم وجود ندارند. تاپلهای رابطه حاصل نیز شامل مقادیر این ویژگیها در تاپلهایی از رابطه اول خواهد بود که ترکیب آنها با تمام تاپلهای رابطه دوم در رابطه اول وجود داشته باشد.
پیوندهای پیشنهادی تک دیک
خیلی عالی بود لذت بردم ممنون.
سلام مهدی گرامی. خوشحالم که این مطلب مورد قبولتون واقع شد.