Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 3 · Урок 9

Операции с релации

Релационната алгебра: селекция, проекция, произведение на две релации, деление, сортиране и групиране с агрегатни функции.

Релационна алгебра

Освен множествените операции (обединение, сечение, разлика) за РБД се дефинират и операции, специфични за таблиците. Съвкупността от всички тях е известна като релационна алгебра. Да разгледаме най-важните.

Селекция

Селекция

Избиране на ПОДМНОЖЕСТВО ОТ РЕДОВЕТЕ на таблица. Аргументи: таблица и условие, с което се избират някои от кортежите.

Пример: от таблицата на учениците в класа с условието 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) за всяка група.