پایگاه داده رابطه ای چیست

پایگاه داده های رابطه ای (relational database) برای نخستین بار در سال ۱۹۷۰ توسط کاد (codd) به عنوان مدلی برای ذخیره سازی و دسترسی به داده ها معرفی شد. پیش از مدل رابطه ای، مدل های دیگری مانند مدل شبکه ای (network model) وجود داشتند.

در مدل رابطه ای (relational model) داده ها و رابطه (relationship) میان آنها توسط مجموعه ای از جدول ها (رابطه ها) پیاده سازی می شود ولی در مدل شبکه ای داده ها و رابطه میان آنها به این صورت است که داده ها به صورت مجموعه ای از رکوردها (recorde) و رابطه میان آنها به صورت پیوندها (link) ها هستند. برای اطلاع بیشتر می توانید این فایل را مطالعه کنید.

در پایگاه داده های رابطه ای، نرم افزاری به نام RDBMS که مخفف Relational DataBase Management System است وجود دارد که می توانیم آنرا معادل با هسته (kernel) سیستم عامل ها بدانیم. وظیفه RDBMS نظارت، کنترل و اداره کردن دسترسی به داده ها، امنیت داده ها، اعمال الگوریتم ها برای حفظ صحت و سازگاری داده ها، احراز هویت و برسی مجوز کاربر برای دسترسی به داده ها و غیره است.

مفاهیم پایگاه داده های رابطه ای

۱ – جداول در پایگاه داده های رابطه ای

در پایگاه داده های رابطه ای تمامی داده ها درون جدول هایی (tables) ذخیره می شوند. هر جدول در مدل رابطه ای به شبیه به یک ماتریس است که شامل یک تا چند ستون و صفر تا چند سطر است. در مفاهیم پایگاه داده های رابطه ای جدول را یک رابطه (rlation)، ستون ها را فیلد (field) و هر سطر را رکورد (recorde) نیز می نامند.

۲ – موجودیت

در مفاهیم پایگاه داده های رابطه ای، موجودیت (entity) یک شی (object) در سیستمی است که می خواهیم آن سیستم را مدل کنیم. یک سیستم می تواند دانشگاه، بانک، بیمارستان، فروشگاه اینترنتی، دفترچه تلفن و یا هر سیستم دیگری باشد. بنابراین اگر فرض کنیم می خواهیم سیستم دانشگاه را مدل کنیم، موجودیت ها می توانند به طور مثال استادها، دانشجوها، درس ها، کارنامه ها باشند.

هر موجودیت معادل با یکی از جدول های پایگاه داده خواهد بود. بنابراین در سیستم دانشگاه، جدول استادها،دانشجوها، درس ها، کارنامه ها وجود دارند. هر موجودیت دارای یک سری خصوصیت (attribute) است که در مدل رابطه ای این خصوصیت ها همان ستون های پایگاه داده خواهند بود.

همچنین نمونه های متفاوتی از هر موجودیت وجود دارند که هر یک دارای خصوصیت های آن موجودیت هستند. به طور مثال استادها و دانشجوهای متفاوتی وجود دارند. از نظر پایگاه داده های رابطه ای، هر سطر از جدول معادل یک نمونه از آن جدول (یا در واقع آن موجودیت) است. شکل زیر یک جدول ساده، ستون ها و سطرهای آنرا نشان می دهد.

۳ – کلید اصلی

در یک جدول که می تواند یک تا چندین ستون داشته باشد، لازم است تا محدیت هایی را بر روی جدول ایجاد کرد. در مطلب های بعدی در مورد محدودیت ها (constraints) صحبت کرده ایم. یکی از این محدودیت ها، کلید اصلی (primary key) است.

کلید اصلی ستون یا حتی چندین ستون از یک جدول است که مقدار این ستون یا ستون ها در تمامی سطرهای جدول منحصر به فرد (unique) باشند و همچنین مقدار ستون یا ستون ها نمی تواند مقدار NULL باشد. در مطلب های بعدی در مورد انواع مقدارها و همچنین مقدار NULL و ایجاد کلید اصلی صحبت شده است ولی در حد این مطلب باید بدانید که :

۱ – مقدار ستون کلید اصلی غیر تکراری و منحصر به فرد است.

۲ – ترکیب چندین ستون می تواند تشکیل کلید اصلی را بدهد.

۳ – هر جدول می تواند تنها و تنها یک کلید اصلی داشته باشد.

۴ – مقدار ستون کلید اصلی در هیچ سطری نمی تواند NULL باشد.

۴ – کلید خارجی

کلید خارجی (forign key) در یک جدول، ستونی است که به کلید اصلی در جدول دیگر اشاره می کند. در مطلب بعدی که در مورد انواع رابطه میان جدول ها صحبت کرده ایم، خواهیم گفت که کلید خارجی یک جدول را به جدول دیگر مرتبط می کند. همانند کلید اصلی، کلید خارجی نیز یکی از انواع محدودیت هایی است که بر روی ستون های یک جدول اعمال می شوند.

بر خلاف کلید اصلی، مقدار کلید خارجی می تواند در میان سطرها تکرای و حتی مقدار NULL داشته باشد. در مطلب های بعدی که در مورد ایجاد جدول ها و ارتباط دادن آنها صحبت کرده ایم، بیشتر در مورد کلید خارجی و اینکه چرا مقدار آن تکراری و NULL است، صحبت کرده ایم ولی در حد این مطلب باید بدانید که :

۱ – مقدار ستون کلید خارجی تکراری است.

۲ – ترکیب چندین ستون می تواند تشکیل کلید خار جی را بدهد.

۳ – هر جدول می تواند بیش از یک کلید خارجی داشته باشد. در واقع جدول با بیش از یک جدول در ارتباط است.

۴ – مقدار ستون کلید خارجی می تواند NULL باشد.

۵ – اندیس (ایندکس) در جدول

در جدول ها برای بالا بردن کارایی (performance) و کاهش زمان جستجوی داده ها، از اندیس – ایندکس (index) استفاده می شود. در واقع اندیس ها ساختارهایی درون پایگاه داده های رابطه ای هستند که باعث افزایش کارایی در بدست آوردن داده های یک جدول می شوند.

در مقابل اینکه اندیس باعث بهبود سرعت جستجو و دسترسی به داده ها (مجموعه ای از سطرها) می شود ولی اشتباه در اندیس گذاری (indexing) در مقابل باعث کاهش سرعت و افزایش زمان اجرای کوئری می شود. بنابراین باید در اندیس گذاری دقت زیاد و تصمیم درست داشت.