Релационна алгебра в СУБД с примери
⚡ Умно обобщение
Релационната алгебра в СУБД е процедурен език за заявки, който приема релации като вход и генерира нови релации като изход. Той групира операторите в категории унарни, множествени и двоични, предоставяйки теоретичната основа, която SQL двигателите превеждат в изпълними планове за заявки.

Какво е релационна алгебра?
Релационна алгебра е процедурен език за заявки, който приема екземпляри на релации като вход и връща нови екземпляри на релации като изход. Той прилага фиксиран набор от оператори рекурсивно върху една или повече релации, а резултатът от всеки оператор е самата релация, която може да бъде използвана в следващата операция. SQL двигателите се основават на тази алгебра, за да планират и изпълняват заявки.
Основна релационна алгебра Operaции
Операторите на релационната алгебра се разделят на три групи.
Унарна релационна Operaции
- ИЗБЕРЕТЕ (σ)
- ПРОЕКТ (π)
- ПРЕИМЕНУВАНЕ (ρ)
Operaции от Теорията на множествата
- СЪЮЗ (∪)
- ПРЕСЕЧИЩЕ (∩)
- РАЗЛИКА (−)
- ДЕКАРТОВ ПРОИЗВОД (×)
Двоичен релационен Operaции
- ПРИСЪЕДИНЕТЕ СЕ КЪМ
- РАЗДЕЛ
Разделите по-долу разглеждат всеки оператор с примери за работа.
ИЗБЕРЕТЕ (σ)
- МАРКИРАЙ Операцията избира подмножество от кортежи, които удовлетворяват даден предикат. Символът сигма σ обозначава го:
σp(r)
където σ е операторът, p е пропозиционалното условие и r е релацията (таблицата). SELECT запазва схемата и изхвърля редове, които не отговарят на предиката.
Пример 1
σ topic = "Database" (Tutorials)
Избира кортежи от Помагала където темата е равна на „База данни“.
Пример 2
σ topic = "Database" AND author = "guru99" (Tutorials)
Избира кортежи от Помагала където темата е „База данни“, а авторът е guru99.
Пример 3
σ sales > 50000 (Customers)
Избира кортежи от Клиентите чиято продажна стойност е по-голяма от 50 000.
Проекция (π)
- проекция Операторът премахва всеки атрибут от входната релация, с изключение на изброените, създавайки вертикално подмножество. Проекцията също така елиминира дублиращите се редове, които са резултат от изтриване.ping атрибути. Символът пи π го обозначава.
Пример: разгледайте следната таблица.
| CustomerID | Потребителско име | Статус |
|---|---|---|
| 1 | Активен | |
| 2 | Amazon | Активен |
| 3 | iPhone | неактивен |
| 4 | Alibaba | Активен |
Проектиране върху CustomerName и Status:
π CustomerName, Status (Customers)
| Потребителско име | Статус |
|---|---|
| Активен | |
| Amazon | Активен |
| iPhone | неактивен |
| Alibaba | Активен |
Преименуване (ρ)
- преименувам Операторът е унарна операция, която дава ново име на атрибут (или на цяла релация). Например, ρ(a/b) R преименува атрибут b на отношението R да се aПреименуването е особено полезно, когато трябва да извършите самосъединяване или съединяване на две релации, които споделят имена на атрибути.
съюз Operaция (∪)
- СЪЮЗ оператор, обозначен с ∪, връща всеки кортеж, който се появява в релация A или релация B, като автоматично премахва дубликатите.
Result ← A ∪ B
За да бъде един съюз валиден:
- A и B трябва да имат еднакъв брой атрибути (еднаква арност).
- Съответните атрибутни домейни трябва да са съвместими.
- Дублиращите се кортежи се премахват автоматично.
Пример. Разгледайте тези две таблици:
| Таблица А | Таблица B | |||
|---|---|---|---|---|
| колона 1 | колона 2 | колона 1 | колона 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
A ∪ B дава:
| колона 1 | колона 2 |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
Разлика в множествата (−)
Символът минус означава разлика в сетоветеРезултатът от A − B е релация, съдържаща всички кортежи, които са в A, но не и в B.
- A и B трябва да са съвместими с обединение.
- Имената на атрибутите и домейните трябва да съвпадат.
Пример: А − Б
| колона 1 | колона 2 |
|---|---|
| 1 | 2 |
Пресечна точка (∩)
- пресичане оператор, обозначен с ∩, дефинира релация, съдържаща всеки кортеж, който се появява както в A, така и в B. A и B трябва да са съвместими с обединение.
Визуално определение на пресечната точка.
Пример: A ∩ B
| колона 1 | колона 2 |
|---|---|
| 1 | 1 |
Декартово произведение (×) в СУБД
- Декартов продукт комбинира всеки кортеж от една релация с всеки кортеж от друга, обединявайки техните колони. Сам по себе си резултатът рядко е полезен, но в комбинация с предикат SELECT той става основата на JOIN. Нарича се още векторно произведение или кръстосано съединение.
Пример: σ колона 2 = '1' (A × B)
Изразът връща всеки ред от A × B който column 2 стойността е 1.
| колона 1 | колона 2 |
|---|---|
| 1 | 1 |
| 1 | 1 |
Регистрация Operaции
A присъединят към е декартово произведение, последвано от предикат за селекция. Съединенията се обозначават с ⋈ символ и ви позволява да комбинирате свързани кортежи от различни релации по смислен начин.
Видове присъединяване:
- Вътрешни съединения: Тета присъединяване, Екви присъединяване, Естествено присъединяване.
- Външни съединения: Ляво, дясно и пълно външно съединение.
Вътрешно присъединяване
В вътрешно присъединяване, включват се само кортежи, които отговарят на критериите за съвпадение; останалите се отхвърлят.
Theta Присъединете се
Общата форма на JOIN е Тета присъединяване, обозначено с θ. Тета-съединението може да използва всяко условие за сравнение в критериите си за избор.
A ⋈θ B
Например:
A ⋈ A.column 2 > B.column 2 (B)
| колона 1 | колона 2 |
|---|---|
| 1 | 2 |
Присъединяване към Equi
Когато Тета съединението използва само условия за равенство, то става Равноправно присъединяване.
A ⋈ A.column 2 = B.column 2 (B)
| колона 1 | колона 2 |
|---|---|
| 1 | 1 |
Равномерното съединение е един от най-използваните стилове на съединение и... RDBMS Оптимизаторът на заявки обикновено влага значителни усилия, за да го направи ефективен.
Естествено свързване (⋈)
A Естествено присъединяване изисква общ атрибут (колона) между релациите. Споделеният атрибут трябва да има едно и също име и домейн. Резултатът съдържа едно копие на съответстващата колона.
Разгледайте тези две таблици.
| Таблица В | |
|---|---|
| В | Квадрат |
| 2 | 4 |
| 3 | 9 |
| Таблица D. | |
|---|---|
| В | куб |
| 2 | 8 |
| 3 | 27 |
C ⋈ D произвежда:
| В | Квадрат | куб |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 27 |
Външно присъединяване
An външно съединение запазва кортежи, които отговарят на критериите за съвпадение намлява кортежи, които не го правят, запълвайки липсващите колони с NULL.
Ляво външно съединение (A ⟕ B)
Лявото външно съединение запазва всеки кортеж в лявата релация. Ако ред в A няма съответстващ ред в B, атрибутите, предоставени от B, се запълват с NULL.
Разгледайте следните таблици:
| Таблица А | |
|---|---|
| В | Квадрат |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| Таблица B | |
|---|---|
| В | куб |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
A ⟕ B дава:
| В | Квадрат | куб |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
Дясно външно съединение (A ⟖ B)
Дясното външно съединение поддържа всеки кортеж в дясната релация. Ако ред в B няма съответстващ ред в A, колоните, предоставени от A, се запълват с NULL.
A ⟖ B дава:
| В | куб | Квадрат |
|---|---|---|
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | NULL |
Пълно външно съединение (A ⟗ B)
Пълното външно съединение запазва всеки кортеж от двете релации, независимо дали условието за съединение е съвпаднало. Липсващите стойности от двете страни стават NULL.
A ⟗ B дава:
| В | Квадрат | куб |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
| 5 | NULL | 75 |
OperaРезюме на справочната информация на Tor
Използвайте тази справочна таблица, за да си припомните с един поглед какво прави всеки оператор.
| Operaция (Символ) | Цел |
|---|---|
| ИЗБЕРЕТЕ (σ) | Избира подмножество от кортежи, които удовлетворяват даден предикат. |
| ПРОЕКТ (π) | Запазва само изброените атрибути и премахва дублиращите се редове. |
| СЪЮЗ (∪) | Връща всеки кортеж, появяващ се в A или B, без дубликати. |
| ЗАДАВАНЕ НА РАЗЛИКА (−) | Връща кортежи в A, които не са в B. |
| ПРЕСЕЧИЩЕ (∩) | Връща кортежи, появяващи се както в A, така и в B. |
| ДЕКАРТОВ ПРОИЗВОД (×) | Комбинира всеки кортеж от A с всеки кортеж от B. |
| ВЪВЕЖДАНЕ | Запазва само кортежи, които отговарят на условието за съединение. |
| ТЕТА ПРИСЪЕДИНЯВАНЕ (θ) | Съединение в обща форма, използващо произволен предикат за сравнение. |
| EQUI ПРИСЪЕДИНЕНИЕ | Тета съединение, което използва само сравнения за равенство. |
| ЕСТЕСТВЕНО СЪЕДИНЯВАНЕ (⋈) | Свързва релации по атрибути, които споделят едно и също име и домейн. |
| ЛЯВО ВЪНШНО СЪЕДИНЯВАНЕ (⟕) | Запазва всеки кортеж от лявата релация, запълва дясната с NULL. |
| ДЯСНО ВЪНШНО СЪЕДИНЯВАНЕ (⟖) | Запазва всеки кортеж от дясната релация, запълвайки лявата с NULL. |
| ПЪЛНО ВЪНШНО СЪЕДИНЯВАНЕ (⟗) | Запазва всеки кортеж от двете релации, като запълва липсващите стойности с NULL. |



