Лекция: Реляционная алгебра Кодда
Обработку данных реляционной модели можно реализовать методами реляционной алгебры.
Реляционная алгебра, определена Коддом и содержит 8 операций, разделенных на две группы:
1. Теоретико – множественные операции — объединение, пересечение, вычитание и декартово произведение.
2. Специальные реляционные операции – выборка, проекция, соединение, деление
Теоретико-множественные операции
Реляционный оператор представляет собой функцию с отношениями в качестве аргументов и возвращающую отношение в качестве результата.
R=f(R1, R2…… Rn)
В качестве аргументов в реляционные операторы могут быть проставлены другие реляционные операторы, подходящие по типу.
R=f(f1(R11, R21…… Rn1), f2(R21, R22…… R2n)….)
В силу этого реляционная алгебра является замкнутой.
Отношения называются совместимыми по типу, если они имеют идентичные заголовки, а именно:
1. отношения имеют одно и тоже множество имен атрибутов, т.е. для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении.
2. атрибуты с одинаковыми именами определены на одних и тех же доменах.
Некоторые отношения не являются совместимыми по типу, но становятся таковыми после переименования атрибутов.
Оператор переименования R rename A1,A2,… as new A1, new A2…,
Например:
R rename student as starosta
Объединение
Объединением двух совместимых по типу отношений называется отношение с тем же заголовком, что и у R1 и R2, и телом, включающим все кортежи операндов, за исключением повторяющихся.
Синтаксис R1 union R2
R1
Шифр | Фамилия | Стипендия |
Котова | ||
Серов | ||
Леонидов |
R2
Шифр | Фамилия | Стипендия |
Котова | ||
Даниленко | ||
Леонидов |
Объединение
Шифр | Фамилия | Стипендия |
Котова | ||
Серов | ||
Леонидов | ||
Даниленко | ||
Леонидов |
Операторы не передают результату никаких данных о потенциальных ключах.
Пересечение
Пересечением двух совместимых по типу отношений R1 и R2 называется отношение с тем же заголовком, что и у отношений R1 и R2, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям R1 и R2.
Синтаксис
R1 intersect R2
Шифр | Фамилия | Стипендия |
Котова |
Вычитание
Вычитанием двух совместимых по типу отношений R1 и R2, называется отношение с тем же заголовком, что и у отношений R1 и R2, и телом, состоящим из кортежей, принадлежащих отношению R1 и не принадлежащих R2.
Синтаксис R1 minus R2
Шифр | Фамилия | Стипендия |
Серов | ||
Леонидов |
Декартово произведение
Декартовым произведением двух отношений R1(R11, R12, R13…) и R2(R21,R22,R23,…) называется отношение, заголовок которого является сцеплением заголовком отношений R1 и R2:
(R11, R12, R13… R21,R22,R23,…), а тело состоит из кортежей, являющихся сцеплением кортежей отношений R1 и R2
(r11, r12, r13… r21, r22, r23….), таких что (r11, r12, r13…) принадлежит R1, а (r21, r22, r23….) принадлежит R2/
Синтаксис R1 times R2
Мощность произведения равна произведению мощностей. Если атрибуты R1 и R2 имеют атрибуты с одинаковыми наименованиями, то перед выполнением операции декартового произведения такие атрибуты необходимо переименовать. Совместимость по типу не требуется.
R1
Шифр | Фамилия |
Котова | |
Серов | |
Леонидов |
R2
Код | Название |
Математика | |
Философия |
R1 times R2
Шифр | Фамилия | Код | Название |
Котова | Математика | ||
Котова | Философия | ||
Серов | Математика | ||
Серов | Философия | ||
Леонидов | Математика | ||
Леонидов | Философия |
Специальные реляционные операторы
Выборка (ограничение, селекция)
Выборку называют горизонтальным срезом отношения по некоторому условию.
Выборкой на отношении R с условием С называется отношение с тем же заголовком, что и у отношения R, и телом, состоящим из кортежей, значения атрибутов которых при подстановке в условие С дают значение ИСТИНА.
Обычно условие С имеет вид R11Q R12, где Q принадлежит {=<>¹³£}, а R11 и R12 атрибуты отношения R или скалярные значения. Такие выборки называются Q — выборки.
Синтаксис R where C или R where R11Q R12
Шифр | Фамилия | Стипендия |
Котова | ||
Серов | ||
Леонидов |
Выборка R where стипендия >250
Шифр | Фамилия | Стипендия |
Котова | ||
Леонидов |
Проекция
Проекцией отношения R по атрибутам R1, R2, R3…Rn, где каждый атрибут принадлежит R, называется отношение с заголовком (R1, R2, R3…Rn) и телом, содержащим множество кортежей вида (r1,r2,r3,…rn). При этом дубликаты кортежи удаляются.
Проекцию называют вертикальным срезом отношения.
Синтаксис R[R1, R2, R3…Rn]
Шифр | Фамилия | Факультет |
Котова | ФИРЭ | |
Серов | Энергетический | |
Леонидов | ФИРЭ | |
Серов | СФ |
R[факультет]
Факультет |
ФИРЭ |
Энергетический |
ФИРЭ |
СФ |
Соединение
Обычно рассматривают несколько разновидностей операции соединения.
Общая операция соединения
Q-соединение
Экви-соединение
Естественное соединение
Наиболее важным из этих операций является операция естественного соединения. Так как остальные разновидности соединения являются частными случаями общей операции соединения.
Общая операция соединения:
Соединением отношений R1 и R2 по условию называется отношение
(R1 times R2) where C, где С представляет собой логическое выражение, в которое могут входить атрибуты отношений R1 и R2 и/или скалярные выражения. То есть, чтобы выполнить операцию соединения, необходимо выполнить последовательно операцию декартова произведения и выборки. Если в отношениях R1 и R2 имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.
Q-соединение
(R1 times R2) where R11QR21 — Q-соединение отношения R1 по атрибуту R11 с отношением R2 по атрибуту R21. Записывают и
R1 [R11QR21] R2
R1
Шифр | Фамилия | Курс |
Котова | ||
Серов | ||
Леонидов |
R2
Код | Наименование | Семестр |
Математика | ||
Ин яз | ||
Философия | ||
ИОСУ | ||
Сложные системы |
Какие экзамены должны быть сданы студентами, закончившими учебный год R1[семестр <=2*курс]R2
Шифр | Фамилия | Курс | Код | Наименование | Семестр |
Котова | Математика | ||||
Котова | Ин яз | ||||
Котова | Философия | ||||
Серов | Философия | ||||
Серов | Математика | ||||
Леонидов | Математика | ||||
Леонидов | Ин яз | ||||
Леонидов | Философия |
Экви соединение это соединение, когда Q есть равенство.
Естественное соединение
Пусть даны отношения R1(R11,R12,R13,..R1n,Z1,Z2,…Zn) и R2(Z1,Z2,…Zn, R21,R22,R23,..,R2m). Тогда естественным соединением отношений R1 и R2 называется отношение с заголовком (R11,R12,R13,..R1n,Z1,Z2,…Zn, R21,R22,R23,..,R2m) и телом, содержащим множество кортежей (r11,r12,r13,…r1n,z1,z2,z3,…zn, r21, r22,…r2m), таких что (r11,r12,r13,…r1n,z1,z2,z3,…zn) принадлежит R1, а (z1,z2,z3,…zn, r21, r22,…r2m) принадлежит R2
Синтаксис
R1 join R2
Соединение производится по одинаковым атрибутам.
R1
Шифр | Фамилия |
Котова | |
Серов | |
Леонидов |
R2
Код | Наименование |
Математика | |
Ин яз | |
Философия |
R3
Шифр | Код | Оценка |
R1 join R2 join R3
Шифр | Фамилия | Код | Наименование | оценка |
Котова | Математика | |||
Котова | Ин яз | |||
Котова | Философия | |||
Серов | Математика | |||
Серов | Философия | |||
Леонидов | Ин яз |
Деление
У операции деления два операнда бинарное и унарное. Результативное отношение состоит из одноатрибутивных кортежей, включающих значения первого атрибута кортежей первого операнда-отношения, таких что множество значений второго атрибута совпадает со множеством значений единственного атрибута второго операнда-отношения.
Синтаксис R1 divideby R2
R1
Шифр | Код |
R2
Код |
R1 divideby R2
Шифр |
Для работы с БД, которые частично или полностью используют реляционную модель данных предназначен язык SQL. Язык разработан на основе реляционной алгебры и относится к непроцедурным языкам программирования (можно определить то, что необходимо выполнить, а не то как это сделать). Язык оперирует отношениями и в результате инструкций языка получается отношение.
Первый стандарт языка разработан в 1989 году Национальным институтом стандартизации США (ANSI). В 1992 году появилась версия SQL92, в 1999 году SQL3. Сегодня различают различные типы диалектов, расширяющие стандарт языка.
Существуют две формы языка:
Интерактивный — создание запросов в режиме диалога
Встроенный — инструкции языка, которые встраиваются внутрь программ, написанных на другом языке (например, при разработке приложений, обрабатывающих данные, расположенные в БД).
Рассмотрим интерактивную форму.
Типы команд языка
DDl- язык определения данных
CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE VIEW, ALTER VIEW, DROP VIEW, CREATE INDEX, DROP INDEX
DML – язык манипулирования данными
INSERT, UPDATE, DELETE
DQL – язык запросов к данным
SELECT
DCL – язык управления данными, либо команды администрирования данных
CREATE DATABASE, ALTER DATABASE, DROP DATABASE, GRANT (предоставление прав доступа для действий над заданными объектами БД), REVOKE (лишение прав доступа для действий над заданными объектами БД) и др.
Команды администрирования данных- предоставляют возможность аудита и анализа операций внутри БД. Могут использоваться при анализе производительности системы данных в целом.
START AUDIT, STOP AUDIT
Команды управления транзакциями – позволяют выполнить обработку информации, объединенной в транзакцию
COMMIT, ROLLBACK, SAVE POINT, SET TRANSACTION (назначение имени транзакции)
Процедурный язык
DECLARE, OPEN, FETCH, CLOSE, EXECUTE и др.