آموزش سیستم مدیریت پایگاه داده - جبر رابطهای
سیستمهای پایگاه داده رابطهای مجهز به یک زبان پرس و جو میباشند که به کاربرانشان کمک میکند تا از نمونههای پایگاه داده استعلام بگیرند. دو نوع زبان پرس و جو وجود دارد: جبر رابطهای و محاسبهگر رابطهای.
جبر رابطهای
جبر رابطهای یک زبان پرس و جوی فرآیندی است که نمونههای رابطه را به عنوان ورودی میگیرد و نمونههای رابطه را به عنوان خروجی تولید میکند. از عملگرها برای انجام پرس و جو استفاده میشود. یک عملگر میتواند یک عملگر یکانی یا دوانی باشد. آنها رابطهها را به عنوان ورودی دریافت میکنند و رابطهها را به عنوان خروجی تولید میکنند. جبر رابطهای به صورت بازگشتی بر روی یک رابطه انجام میشود و نتایج میانی نیز به عنوان رابطهها مد نظر قرار میگیرند.
عملیات اصلی جبر رابطهای عبارتند از:
- انتخاب (Select)
- پروژه (Project)
- اتحاد (Union)
- تفاوت (Set Difference)
- ضرب درهم (Cartesian Product)
- تغییر نام (Rename)
در بخشهای زیر به تمامی این عملیاتها پرداخته خواهد شد.
عملیات انتخاب (σ)
این عملیات تاپلهایی را که شرط مورد نظر را ارضا میکنند از یک رابطه انتخاب میکند.
نمادگذاری − σp(r)
که در آن σ به معنای شرط انتخاب و r به معنای رابطه است. p فرمول منطقی پیشگزینه است که ممکن است از اتصالگرهایی مانند و، یا و نه استفاده کند. این عبارات ممکن است از عملگرهای رابطهای مانند − =، ≠، ≥، <، >، ≤ استفاده کنند.
برای مثال :
σsubject = "database"(Books)
خروجی − تاپلها را از جداولی انتخاب میکند که موضوع آنها 'پایگاه داده' است.
σsubject = "database" and price = "450"(Books)
خروجی − تاپلها را از کتابها انتخاب میکند که موضوع آنها 'پایگاه داده' و 'قیمت' آنها 450 است.
σsubject = "database" and price = "450" or year > "2010"(Books)
خروجی − تاپلها را از کتابها انتخاب میکند که موضوع آنها 'پایگاه داده' و 'قیمت' آنها 450 است یا آن کتابهایی که پس از سال 2010 منتشر شدهاند.
عملیات پروژه (∏)
ستون(ها) را انتخاب میکند که شرط داده شده را ارضا کنند.
نمادگذاری − ∏A1, A2, An (r)
که در آن A1, A2, An نامهای ویژگیهای رابطه r هستند.
ردیفهای تکراری به طور خودکار حذف میشوند، زیرا رابطه مجموعهای است.
برای مثال −
∏subject, author (Books)
ستونهایی که با نامهای موضوع و نویسنده در رابطه کتابها نامگذاری شدهاند را انتخاب و پروژه میکند.
عملیات اتحاد (∪)
یک اتحاد دوانی بین دو رابطهی داده شده انجام میدهد و به شکل زیر تعریف میشود:
r ∪ s = { t | t ∈ r or t ∈ s}
نمادگذاری − r U s
که در آن r و s همچنین روابط پایگاه داده یا مجموعه نتایج رابطه (رابطه موقت) هستند.
برای اعتبار داشتن یک عملیات اتحاد، شرایط زیر باید برقرار باشند −
- r و s باید تعداد ویژگیهای یکسانی داشته باشند.
- حوزههای ویژگی باید سازگار باشند.
- تاپلهای تکراری به طور خودکار حذف میشوند.
∏ author (Books) ∪ ∏ author (Articles)
خروجی − نامهای نویسندگانی را پروژه میکند که یک کتاب یا یک مقاله یا هر دو را نوشتهاند.
تفاضل مجموعه (−)
نتیجهی عملیات تفاضل مجموعه، تاپلهایی است که در یک رابطه وجود دارند اما در رابطه دوم وجود ندارند.
نمادگذاری − r − s
تمام تاپلهایی که در r وجود دارند اما در s وجود ندارند را پیدا میکند.
∏ author (Books) − ∏ author (Articles)
خروجی − نام نویسندگانی را ارائه میدهد که کتابها را نوشتهاند اما مقالاتی نوشته نکردهاند.
ضرب دستی (Χ)
اطلاعات دو رابطهی مختلف را با یکدیگر ترکیب میکند.
نمادگذاری − r Χ s
که در آن r و s رابطهها هستند و خروجی آنها به شکل زیر تعریف میشود:
r Χ s = { q t | q ∈ r و t ∈ s}
σauthor = 'Example'(Books Χ Articles)
خروجی − یک رابطه را تولید میکند که تمام کتابها و مقالاتی که توسط tutorialspoint نوشته شدهاند را نشان میدهد.
عملگر تغییر نام (ρ)
نتایج جبر رابطه همچنین رابطهها هستند اما بدون نام. عملگر تغییر نام به ما امکان میدهد رابطه خروجی را تغییر نام دهیم. عملیات 'تغییر نام' با حرف یونانی کوچک رو (ρ) نشان داده میشود.
نمادگذاری − ρx(E)
که در آن نتیجه عبارت E با نام x ذخیره میشود.
عملیاتهای اضافی عبارتند از −
- تقاطع مجموعه
- اختصاص
- اتصال طبیعی
محاسبات رابطهای
بر خلاف جبر رابطهای، محاسبات رابطهای یک زبان پرس و جو غیر رویهای است، به این معنی که تنها میگوید چه کاری را باید انجام دهیم اما توضیحی درباره چگونگی انجام آن نمیدهد.
محاسبات رابطهای در دو شکل وجود دارد −
محاسبات رابطهای تاپلی (TRC)
متغیر فیلتر شده محدودهای از تاپلها را پوشش میدهد
نمادگذاری − {T | شرط}
تمام تاپلهای T را که یک شرط را برآورده میکنند، برمیگرداند.
برای مثال :
{ T.name | Author(T) AND T.article = 'database' }
خروجی − تاپلهایی را با 'نام' از نویسنده که مقالهای درباره 'پایگاه داده' نوشته است، برمیگرداند.
محاسبات رابطهای تاپلی قابل کوانتیفیکاسیون است. ما میتوانیم از کوانتیفایرهای وجودی (∃) و کوانتیفایرهای جهانی (∀) استفاده کنیم.
برای مثال :
{ R| ∃T ∈ Authors(T.article='database' AND R.name=T.name)}
خروجی − پرسمان فوق نتیجهای مشابه پرسمان قبلی خواهد داشت.
محاسبات رابطهای دامنهای (DRC)
در DRC، متغیر فیلتر از دامنه ویژگیها به جای مقادیر کامل تاپل استفاده میکند (همانطور که در TRC ذکر شد).
نمادگذاری −
{ a1, a2, a3, ..., an | P (a1, a2, a3, ... ,an)}
که a1، a2 ویژگیها هستند و P به فرمولهای ساخته شده توسط ویژگیهای داخلی اشاره دارد.
برای مثال −
{< article, page, subject > | ∈ Example ∧ subject = 'database'}
خروجی − مجموعه مقاله، صفحه و موضوع را از رابطه Example استخراج میکند، به شرطی که موضوع آن دیتابیس باشد.
مانند TRC، DRC هم میتوان از کوانتیفایرهای وجودی و همگانی استفاده کرد. DRC نیز شامل عملگرهای رابطهای است.