~3 min read • Updated Apr 12, 2026
مقدمه
مدل رابطهای دیتابیس که توسط ادگار ا. کاد در سال ۱۹۷۰ معرفی شد، بر پایه ریاضیات بهویژه تئوری مجموعهها (Set Theory) ساخته شده است. هر جدول در دیتابیس رابطهای در واقع یک مجموعه (Set) از رکوردها (Tuple) است. تمام عملیات اصلی SQL مانند SELECT، JOIN، UNION، INTERSECT و EXCEPT مستقیماً از عملیات مجموعهای گرفته شدهاند.
مفاهیم پایه تئوری مجموعهها
یک مجموعه، مجموعهای از عناصر منحصربهفرد است. در دیتابیس رابطهای:
- جدول = مجموعه (Set)
- ردیف (Row) = عضو مجموعه (Element یا Tuple)
- ستون = ویژگی (Attribute)
عملیات اصلی مجموعهای در دیتابیس
۱. اجتماع (Union)
اجتماع دو مجموعه، همه عناصر منحصربهفرد از هر دو مجموعه را شامل میشود.
SELECT * FROM Employees
UNION
SELECT * FROM Contractors;۲. اشتراک (Intersection)
فقط عناصری که در هر دو مجموعه وجود دارند.
SELECT * FROM Employees
INTERSECT
SELECT * FROM Contractors;۳. تفاضل (Difference / Minus / Except)
عناصری که در مجموعه اول هستند اما در مجموعه دوم نیستند.
SELECT * FROM Employees
EXCEPT
SELECT * FROM Contractors;۴. ضرب دکارتی (Cartesian Product)
ترکیب هر عضو از مجموعه اول با هر عضو از مجموعه دوم. این عملیات پایه JOIN بدون شرط است.
SELECT * FROM Department, Employee; -- Cartesian Productنقش تئوری مجموعهها در JOINها
انواع JOIN در SQL مستقیماً از مفاهیم مجموعهای مشتق شدهاند:
INNER JOIN→ اشتراک (Intersection)LEFT JOIN→ مجموعه اول + (مجموعه اول منهای اشتراک)RIGHT JOIN→ مجموعه دوم + (مجموعه دوم منهای اشتراک)FULL OUTER JOIN→ اجتماع (Union)
مثال عملی INNER JOIN
SELECT e.name, d.department_name
FROM Employees e
INNER JOIN Departments d ON e.dept_id = d.id;خواص مهم مجموعهها در دیتابیس رابطهای
- بدون تکرار: هر ردیف در جدول منحصربهفرد است (توسط Primary Key تضمین میشود).
- ترتیب بیمعنی: ترتیب ردیفها در مجموعه اهمیتی ندارد.
- اتمی بودن: هر سلول فقط یک مقدار دارد (اولین قانون نرمالسازی).
کاربرد عملی تئوری مجموعهها
مهندسان دیتابیس با درک عملیات مجموعهای میتوانند:
- کوئریهای پیچیده را سادهتر بنویسند
- عملکرد کوئری را بهینه کنند
- از UNION به جای OR در شرایط خاص استفاده کنند
- دادههای تکراری را بهراحتی مدیریت کنند
مثال کامل: ترکیب چندین عملیات مجموعهای
-- کارمندانی که در بخش فروش هستند اما در پروژه فعلی شرکت ندارند
SELECT name FROM Employees
WHERE dept_id = (SELECT id FROM Departments WHERE name = 'Sales')
EXCEPT
SELECT e.name FROM Employees e
INNER JOIN Project_Assignments pa ON e.id = pa.employee_id;نتیجهگیری
تئوری مجموعهها پایه ریاضی مدل رابطهای است و درک عمیق آن به شما کمک میکند SQL را نه فقط بهعنوان یک زبان کوئری، بلکه بهعنوان یک زبان ریاضی قدرتمند ببینید. هر چه بیشتر با عملیات UNION، INTERSECT، EXCEPT و JOIN کار کنید، مهارت شما در نوشتن کوئریهای کارآمد و منطقی بیشتر خواهد شد.
Written & researched by Dr. Shahin Siami