Релационна алгебра
Освен множествените операции (обединение, сечение, разлика) за РБД се дефинират и операции, специфични за таблиците. Съвкупността от всички тях е известна като релационна алгебра. Да разгледаме най-важните.
Селекция
Селекция
Избиране на ПОДМНОЖЕСТВО ОТ РЕДОВЕТЕ на таблица. Аргументи: таблица и условие, с което се избират някои от кортежите.
Пример: от таблицата на учениците в класа с условието S = 'Ж' получаваме нова таблица само с момичетата. Схемата на резултата е същата; мощността е по-малка или равна.
Проекция
Проекция
Избиране на ПОДМНОЖЕСТВО ОТ КОЛОНИТЕ. Аргументи: таблица и подмножество на релационната схема — от всеки кортеж се вземат само стойностите на избраните колони.
Пример: от таблицата на учениците проектираме върху (Номер, Име, Фамилия) — нова релация само с тези три атрибута.
Запомни разликата
Селекция реже хоризонтално (избира редове); проекция реже вертикално (избира колони).
Произведение на две релации
Аргументи: две таблици и общ атрибут (или няколко), който има една и съща роля в двете. Резултатът е нова таблица, чиято схема е обединение на схемите на двете (общият атрибут участва веднъж).
За всяка стойност α на общия атрибут: ако първата таблица има p кортежа с тази стойност, а втората — q, в резултата влизат p·q кортежа — всеки с всеки, като стойностите на останалите атрибути се вземат от съответните кортежи.
Примерът от учебника
Таблица T (Учител, Предмет): (Иванов, математика), (Иванов, информатика), (Петрова, математика), (Петрова, технологии), (Христова, информатика), (Христова, технологии). Таблица S (Предмет, Клас): (математика, 10), (математика, 11), (математика, 12), (технологии, 10) и (информатика, 11).
Произведението на T и S по атрибута „предмет" съдържа 10 кортежа (Учител, Предмет, Клас): Иванов преподава математика в 10, 11 и 12 клас (3 кортежа = 1·3), информатика в 11 (1·1) и т.н.
Бележка
В SQL това е операцията JOIN — ще я срещаме постоянно.
Деление
Аргументи: „делимо" T и „делител" S, като схемата на S е подмножество на схемата на T. От кортежите на T, които (гледани само в атрибутите на S) дават кортеж на S, се строи резултат само с останалите атрибути.
Пример: делимо — таблицата (Учител, Предмет, Клас) от произведението по-горе; делител — таблица с единствен кортеж (информатика). Резултатът е (Учител, Клас): кой преподава информатика и в кой клас — (Иванов, 11) и (Христова, 11)*.
Бележка
* В учебника фиг. 9.5 показва (Иванов, 11) и (Христова, 12) за съответния вариант на данните — важна е идеята: делението „филтрира по шаблон" и премахва колоните на делителя.
Сортиране и групиране
Сортиране: аргументи са таблица, един или няколко атрибута (наредени!) и посока за всеки — нарастващ или намаляващ ред. Сортира се по първия атрибут; при равни стойности — по втория и т.н.
Групиране е специфичен случай: всички кортежи с една и съща стойност в атрибута за сортиране се събират в група, а за групата се задават обработки: сума, средно, минимум, максимум… Функциите, пресмятани за групите, се наричат агрегатни функции.
| Операция | Какво прави | SQL еквивалент |
|---|---|---|
| Селекция | Избира редове по условие | WHERE |
| Проекция | Избира колони | SELECT колона1, колона2 |
| Произведение | Свързва две таблици по общ атрибут | JOIN |
| Сортиране | Нарежда редовете | ORDER BY |
| Групиране | Групи + агрегатни функции | GROUP BY + SUM/AVG/… |
Какво трябва да запомниш
- Релационна алгебра = множествените операции + операциите с таблици.
- Селекция избира редове (условие); проекция избира колони (подсхема).
- Произведение по общ атрибут: за стойност α с p и q срещания → p·q кортежа.
- Деление: филтрира по „шаблона“ на делителя и маха неговите колони.
- Групиране = сортиране + агрегатни функции (сума, средно, min, max) за всяка група.