- •Информация и данные
- •Основные понятия систем с базами данных
- •Пользователи информационной системы с БД
- •Требования к информационным системам с базами данных
- •Основные компоненты ИС с базами данных
- •Архитектура систем с базами данных. Понятие модели данных
- •Сущности и их свойства
- •Связи (отношения) между сущностями
- •Виды связей между сущностями
- •Еще о сущностях, их свойствах и связях между ними
- •Модели данных. Ранние подходы к организации баз данных
- •Основные понятия реляционной модели данных
- •Структуры данных реляционной модели. Реляционные отношения
- •Свойства отношений
- •Отсутствие в отношении одинаковых кортежей
- •Кортежи отношения не упорядочены (сверху вниз)
- •Атрибуты отношения не упорядочены (слева направо)
- •Значения всех атрибутов являются атомарными
- •Виды отношений
- •Реляционная база данных
- •Реляционная модель. Операции над данными
- •Реляционная алгебра
- •Пересечение отношений
- •Вычитание отношений
- •Декартово произведение отношений
- •Проекция
- •Выборка (ограничение)
- •Естественное соединение отношений
- •Деление
- •Реляционное исчисление
- •Примеры правильно построенных формул
- •Язык SQL
- •Отличие SQL от процедурных языков программирования
- •Формы и составные части SQL
- •Условия и терминология
- •Простейшие SELECT-запросы
- •Ограничения целостности в реляционной модели
- •Ограничения целостности уровня атрибута
- •Домены отношений
- •Отсутствующая информация или NULL-значения.
- •Ограничения целостности уровня кортежа
- •Ограничения целостности уровня отношения
- •Потенциальные, первичные, альтернативные ключи отношения
- •Потенциальные ключи и NULL-значения
- •Ограничения целостности уровня базы данных
- •Внешние ключи и NULL-значения
- •Правила ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •Средства обеспечения целостности данных в СУБД
- •Поддержка декларативных ограничений целостности в языке SQL
- •Проектирование базы данных
- •Функциональная зависимость
- •Нормализация отношений базы данных
- •Нормальные формы
- •Декомпозиция без потерь и функциональные зависимости
- •Первая и вторая нормальные формы.
- •Третья нормальная форма.
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Итоговая схема процедуры нормализации
- •Структуры хранения данных и методы доступа
- •Хранение отношений и доступ к хранимым данным
- •Индексирование
- •Управление транзакциями и целостность баз данных
- •Транзакции и параллелизм
- •Проблемы, возникающие при параллельном выполнении транзакций
- •Проблема потери результатов обновления
- •Проблемы несовместимого анализа
- •Несовместимый анализ – неповторяемое считывание
- •Несовместимый анализ – фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Конфликты между транзакциями
- •Методы сериализации транзакций
- •Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема несовместимого анализа. Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Уровни изоляции. Объекты синхронизационных блокировок
- •Предикатные синхронизационные блокировки
- •Метод временных меток
- •Уровни изоляции.
- •Синтаксис операторов SQL, определяющих уровни изоляции
56
приводит к получению какой-либо новой информации. Это хорошо видно из приведенного примера. Более того, на практике она чаще всего встречается в случае неправильно составленных запросов, приводя к «взрывному» увеличению размеров выходного отношения, и, соответственно времени выполнения запроса и потребляемых ресурсов компьютера. Тем не менее, декартово произведение имеет важное концептуальное значение при рассмотрении других составных реляционных операторов, в частности операторов соединения отношений (см. ниже).
Приведенные выше операции реляционной алгебры являются реляционными расширениями традиционных операций над множествами. Ниже мы рассмотрим операции являющиеся специфическими именно для реляционной алгебры.
Проекция
Проекцией отношения R по атрибутам X,Y,…,Z, обозначается R[X,Y,…,Z], где каждый из указанных атрибутов принадлежит отношению R, называется отношение с заголовком {X,Y,…,Z} и телом, содержащим множество всех кортежей {<X:x>,<Y:y>,…,<Z:z>}, таких, для которых в отношении R значение атрибута Х равно х, атрибута Y равно y, …, атрибута Z равно z.
Спомощью оператора проекции получается
«вертикальное» подмножество атрибутов отношения R, с последующим исключением дублирующих кортежей (если они возникают).
Выборка (ограничение)
Пусть задано отношение R[A], где А множество его атрибутов. Пусть также F(A) это логическая формула (предикат) принимающая значение истина или ложь, образованная операндами, представляющими собой имена атрибутов отношений R или литералы, а также скалярными операторами сравнения (=, ≠, >, <, ≥, ≤) и логическими операторами Λ(И), V(ИЛИ), ¬(НЕ).
Выборкой из отношения R[A], т.е. RESTRICT R[A] WHERE F(A), называется отношение, заголовок которого совпадает с заголовком отношения R, а тело содержит множество кортежей, являющихся подмножеством множества кортежей отношения R,
для которых формула F(A) принимает значение истина.
Таким образом, операция выборки (ограничения) выбирает
57
горизонтальное подмножество входного отношения.
Пример
Пусть R это отношение
R
КОД |
ИМЯ |
ФАКУЛЬТЕТ |
КУРС |
С2 |
Иванов |
Физический |
1 |
С5 |
Петрова |
Химический |
2 |
С9 |
Полякова |
Исторический |
3 |
С4 |
Сидоров |
Физический |
2 |
Тогда отношение, полученное с помощью оператора
RESTRICT R WHERE КУРС=2, будет иметь вид
RESTRICT R WHERE КУРС=2
КОД |
ИМЯ |
ФАКУЛЬТЕТ |
КУРС |
С5 |
Петрова |
Химический |
2 |
С4 |
Сидоров |
Физический |
2 |
θ-соединение отношений
В отличие от операций, приведенных выше, операция θ-соединение является составной, т.е. она может быть реализована последовательным применением других более элементарных операций. Однако, в силу большой практической значимости этой операции, в особенности ее частного случая –
естественного соединения отношений, эта операция введена в число основных операций реляционной алгебры.
Пусть отношения R1 и R2 не имеют атрибутов с одинаковыми именами, а символ θ обозначает один из операторов сравнения: =, ≠, >,<, ≥, ≤, тогда θ-соединением отношения R1 по атрибуту Х с отношением R2 по атрибуту Y является отношение, совпадающее с декартовым произведением отношений R1 и R2, для кортежей которого выражение условия XθY принимает значение
истина.
Другими словами θ-соединение это
(R1 TIMES R2) WHERE X θ Y
Очевидно, что сравниваемые атрибуты X и Y должны быть определены на общем домене, для того, чтобы операция сравнения имела смысл.
Пример.
Пусть даны два отношения: СТУДЕНТЫ и ПРЕПОДАВАТЕЛИ. Причем в обоих отношениях атрибуты ГОРОД_СТУД и ГОРОД_ПРЕПОД определены на одинаковых доменах, представляющих собой список городов.
58
СТУДЕНТЫ ПРЕПОДАВАТЕЛИ
ИМЯ_СТУД |
ГОРОД_СТУД |
Иванов |
Воронеж |
Петрова |
Липецк |
Сидоров |
Воронеж |
Орлов |
Орел |
Кузнецов |
Воронеж |
ИМЯ_ПРЕПОД |
ГОРОД_ПРЕПОД |
Жуков |
Воронеж |
Соболев |
Липецк |
Ковалев |
Воронеж |
Лыков |
Воронеж |
Тогда θ-соединением этих отношений по условию ГОРОД_СТУД ≠ ГОРОД_ПРЕПОД будет следующее отношение.
(СТУДЕНТЫ TIMES ПРЕПОДАВАТЕЛИ) WHERE ГОРОД_СТУД≠ГОРОД_ПРЕПОД
ИМЯ_СТУД |
ГОРОД_СТУД |
ГОРОД_ПРЕПОД |
ИМЯ_ПРЕПОД |
Иванов |
Воронеж |
Липецк |
Соболев |
Петрова |
Липецк |
Воронеж |
Жуков |
Петрова |
Липецк |
Воронеж |
Ковалев |
Петрова |
Липецк |
Воронеж |
Лыков |
Сидоров |
Воронеж |
Липецк |
Соболев |
Орлов |
Орел |
Воронеж |
Жуков |
Орлов |
Орел |
Липецк |
Соболев |
Орлов |
Орел |
Воронеж |
Ковалев |
Орлов |
Орел |
Воронеж |
Лыков |
Кузнецов |
Воронеж |
Липецк |
Соболев |
Естественное соединение отношений
Операция естественного соединения, называемая ещё эквисоединением,
является частным случаем θ-соединения, когда оператор сравнения θ является оператором равенства (=).
Пусть отношения R1 и R2 имеют заголовки {X1,X2,…,Xm,Y1,Y2,…,Yn} и {Y1,Y2,…,Ym,Z1,Z2,…,Zk}. В более краткой записи {X,Y} – множество атрибутов отношения R1, а {Y,Z} – множество атрибутов отношения R2.
Здесь набор Y – {Y1,Y2,…,Yn} обозначает множество атрибутов, являющихся общими для обоих отношений, т.е. в данном случае совпадают, как имена, так и домены соответствующих атрибутов.
Тогда, естественным соединением отношений R1 и R2 (R1 JOIN R2) по атрибуту Y (возможно составному) является отношение с заголовком {X,Y,Z} и телом, содержащим множество всех кортежей {<X:x>, <Y:y>, <Z:z>}, таких, для которых в отношении R1 значение атрибута Х равно х, а для атрибута Y равно y, и в отношении R2 значение атрибута Y равно y, а атрибута Z равно z.
59
Пример
Если в качестве входных отношений взять несколько измененные отношения СТУДЕНТЫ и ПРЕПОДАВАТЕЛИ из предыдущего примера,
СТУДЕНТЫ
ИМЯ_СТУД |
ГОРОД |
Иванов |
Воронеж |
Петрова |
Липецк |
Сидоров |
Воронеж |
Орлов |
Орел |
Кузнецов |
Воронеж |
ПРЕПОДАВАТЕЛИ |
ГОРОД |
ИМЯ_ПРЕПОД |
|
Жуков |
Воронеж |
Соболев |
Липецк |
Ковалев |
Воронеж |
Лыков |
Воронеж |
то отношением, представляющим собой их естественное соединение по атрибуту ГОРОД, то есть (СТУДЕНТЫ JOIN ПРЕПОДАВАТЕЛИ), будет отношение
(СТУДЕНТЫ JOIN ПРЕПОДАВАТЕЛИ)
ИМЯ_СТУД |
ГОРОД |
ИМЯ_ПРЕПОД |
Иванов |
Воронеж |
Жуков |
Иванов |
Воронеж |
Ковалев |
Иванов |
Воронеж |
Лыков |
Петрова |
Липецк |
Соболев |
Сидоров |
Воронеж |
Жуков |
Сидоров |
Воронеж |
Ковалев |
Сидоров |
Воронеж |
Лыков |
Кузнецов |
Воронеж |
Жуков |
Кузнецов |
Воронеж |
Ковалев |
Кузнецов |
Воронеж |
Лыков |
Как уже говорилось выше, операция естественного соединения отношений, также как и операция θ-соединения, частным случаем которой она является, это не простая, а составная операция. Она может быть реализована последовательным применением оператора декартова произведения, оператора выборки по соответствующему условию, и оператора проекции для исключения одинаковых атрибутов. С этой точки зрения включения этих операций в число основных операций реляционной алгебры не является необходимым. Однако операция естественного соединения (обычно говорят операция соединения, опуская прилагательное естественное) оказывается чрезвычайно полезной с практической точки зрения. Эта операция позволяет связывать между собой данные об одних и тех же объектах, хранящиеся в разных отношениях. В силу ее большой полезности операции соединения на практике реализуется с помощью более эффективных алгоритмов, без использования в качестве промежуточного результата декартова произведения, которое, как уже говорилось, требует значительных вычислительных ресурсов.
Операции, эквивалентные оператору соединения реляционной алгебры, реализованы в языке запросов к базам данных SQL. SQL-запросы с использованием соединения отношений относятся к разделу сложных запросов, требующих от программиста знания тонкостей операций, осуществляемых над