جبر رابطهای یک زبان پرسوجو برای پایگاههای داده رابطهای است که با استفاده از عملگرهای ریاضی و منطقی، دادههای ذخیرهشده در جداول را مدیریت و بازیابی میکند. این سیستم بر مبنای مجموعهای از عملیات است که میتواند روی روابط (جداول) انجام شود. در واقع، جبر رابطهای اصول ریاضیاتی مورد نیاز برای مدیریت دادهها در پایگاه دادههای رابطهای را تعریف میکند.
SQL Server، بهعنوان یک سیستم مدیریت پایگاه داده رابطهای، از این اصول در دستورات خود استفاده میکند تا عملیات مختلف روی دادهها را پشتیبانی کند. جبر رابطهای شامل تعدادی عملگر است که به کمک آنها میتوان دادهها را از جداول بازیابی، تغییر، ترکیب و فیلتر کرد.
در ادامه، اجزای مختلف جبر رابطهای و معادلهای آنها در SQL Server را بهتفصیل توضیح میدهیم.
۱. انتخاب (Selection - σ)
انتخاب در جبر رابطهای به انتخاب سطرهایی از یک جدول اطلاق میشود که شرایط مشخصی را برآورده کنند. این عملگر معادل دستور WHERE
در SQL است.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
در اینجا، تمام دانشجویانی که سن آنها بیشتر از ۲۰ سال است، انتخاب میشوند.
۲. فرافکنی (Projection - π)
فرافکنی به انتخاب ستونهای خاص از یک جدول اشاره دارد. در SQL، این معادل دستور SELECT
با اشاره به نام ستونهای خاص است.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
در اینجا، فقط ستونهای FirstName
و LastName
از جدول دانشجویان انتخاب میشود.
۳. ضرب دکارتی (Cartesian Product - ×)
ضرب دکارتی ترکیب دو جدول است که در آن هر سطر از جدول اول با هر سطر از جدول دوم ترکیب میشود. در SQL، این معادل استفاده از CROSS JOIN
است.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
در اینجا، هر سطر از جدول Courses
با هر سطر از جدول Students
ترکیب میشود.
۴. پیوند (Join - ⨝)
پیوند یکی از عملیات مهم جبر رابطهای است که دو جدول را بر اساس یک شرط خاص ترکیب میکند. این معادل INNER JOIN
یا OUTER JOIN
در SQL است.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
در اینجا، دانشجویانی که دورهای را انتخاب کردهاند، نمایش داده میشوند.
۵. اتحاد (Union - ∪)
اتحاد در جبر رابطهای، تمامی سطرهای منحصر به فرد دو جدول را در یک مجموعه ترکیب میکند. در SQL، این معادل دستور UNION
است.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
در اینجا، تمامی دانشجویان و معلمان با نامهای منحصر به فرد در یک خروجی نمایش داده میشوند.
۶. تفاضل (Difference - −)
تفاضل در جبر رابطهای، سطرهایی را که در جدول اول هستند ولی در جدول دوم نیستند، برمیگرداند. معادل آن در SQL، استفاده از EXCEPT
است.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
در اینجا، دانشجویانی که فارغالتحصیل نشدهاند نمایش داده میشوند.
۷. اشتراک (Intersection - ∩)
اشتراک در جبر رابطهای، سطرهایی را که در هر دو جدول وجود دارند، برمیگرداند. در SQL Server از دستور INTERSECT
برای این عملیات استفاده میشود.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
در اینجا، دانشجویانی که هم دروس را گذراندهاند و هم در فهرست دانشجویان افتخاری هستند نمایش داده میشوند.
۸. تقسیم (Division - ÷)
تقسیم در جبر رابطهای کمی پیچیدهتر است. این عملگر برای پیدا کردن سطرهایی استفاده میشود که برای یک مجموعه از مقادیر در یک جدول، با تمامی مقادیر در جدول دیگر مطابقت دارند. در SQL Server، معادلی مستقیم برای این عملگر وجود ندارد و باید بهطور دستی از توابع مختلف و زیردستورات استفاده کرد.
فرم جبر رابطهای:
پیادهسازی در SQL Server:
برای اجرای تقسیم، از روشهای ترکیب NOT EXISTS
و GROUP BY
استفاده میشود.
مثال:
فرض کنید میخواهیم دانشجویانی را پیدا کنیم که همه دورههای یک مجموعه خاص را گذراندهاند:
۹. بازنمایی (Renaming - ρ)
بازنمایی به تغییر نام جداول یا ستونها اشاره دارد. در SQL Server، میتوان از AS
برای تغییر نام ستونها یا جداول استفاده کرد.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
۱۰. توابع تجمعی (Aggregate Functions)
جبر رابطهای کلاسیک شامل توابع تجمعی نیست، اما در SQL Server، این توابع نقش مهمی در تحلیل دادهها دارند. توابعی مانند COUNT()
, SUM()
, AVG()
, MAX()
, و MIN()
برای اجرای عملیات آماری روی مجموعهای از دادهها استفاده میشوند.
مثال:
در اینجا، میانگین سن تمامی دانشجویان محاسبه میشود.
۱۱. گروهبندی (Grouping - γ)
گروهبندی در جبر رابطهای به گروهبندی سطرها براساس یک یا چند ستون خاص اشاره دارد. در SQL Server، از دستور GROUP BY
برای این عملیات استفاده میشود.
فرم جبر رابطهای:
معادل SQL Server:
مثال:
در اینجا، تعداد دانشجویان ثبتنامشده در هر دوره شمارش میشود.
این موارد، بخشهایی از جبر رابطهای هستند که در SQL Server بهطور مستقیم یا غیرمستقیم به کار گرفته میشوند. جبر رابطهای بهعنوان اساس زبان SQL، قدرت زیادی در مدیریت دادههای رابطهای به توسعهدهندگان ارائه میدهد و میتوان از این عملیات برای انجام هر نوع تحلیل و مدیریت داده استفاده کرد.