- •Информация и данные
- •Основные понятия систем с базами данных
- •Пользователи информационной системы с БД
- •Требования к информационным системам с базами данных
- •Основные компоненты ИС с базами данных
- •Архитектура систем с базами данных. Понятие модели данных
- •Сущности и их свойства
- •Связи (отношения) между сущностями
- •Виды связей между сущностями
- •Еще о сущностях, их свойствах и связях между ними
- •Модели данных. Ранние подходы к организации баз данных
- •Основные понятия реляционной модели данных
- •Структуры данных реляционной модели. Реляционные отношения
- •Свойства отношений
- •Отсутствие в отношении одинаковых кортежей
- •Кортежи отношения не упорядочены (сверху вниз)
- •Атрибуты отношения не упорядочены (слева направо)
- •Значения всех атрибутов являются атомарными
- •Виды отношений
- •Реляционная база данных
- •Реляционная модель. Операции над данными
- •Реляционная алгебра
- •Пересечение отношений
- •Вычитание отношений
- •Декартово произведение отношений
- •Проекция
- •Выборка (ограничение)
- •Естественное соединение отношений
- •Деление
- •Реляционное исчисление
- •Примеры правильно построенных формул
- •Язык SQL
- •Отличие SQL от процедурных языков программирования
- •Формы и составные части SQL
- •Условия и терминология
- •Простейшие SELECT-запросы
- •Ограничения целостности в реляционной модели
- •Ограничения целостности уровня атрибута
- •Домены отношений
- •Отсутствующая информация или NULL-значения.
- •Ограничения целостности уровня кортежа
- •Ограничения целостности уровня отношения
- •Потенциальные, первичные, альтернативные ключи отношения
- •Потенциальные ключи и NULL-значения
- •Ограничения целостности уровня базы данных
- •Внешние ключи и NULL-значения
- •Правила ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •Средства обеспечения целостности данных в СУБД
- •Поддержка декларативных ограничений целостности в языке SQL
- •Проектирование базы данных
- •Функциональная зависимость
- •Нормализация отношений базы данных
- •Нормальные формы
- •Декомпозиция без потерь и функциональные зависимости
- •Первая и вторая нормальные формы.
- •Третья нормальная форма.
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Итоговая схема процедуры нормализации
- •Структуры хранения данных и методы доступа
- •Хранение отношений и доступ к хранимым данным
- •Индексирование
- •Управление транзакциями и целостность баз данных
- •Транзакции и параллелизм
- •Проблемы, возникающие при параллельном выполнении транзакций
- •Проблема потери результатов обновления
- •Проблемы несовместимого анализа
- •Несовместимый анализ – неповторяемое считывание
- •Несовместимый анализ – фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Конфликты между транзакциями
- •Методы сериализации транзакций
- •Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема несовместимого анализа. Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Уровни изоляции. Объекты синхронизационных блокировок
- •Предикатные синхронизационные блокировки
- •Метод временных меток
- •Уровни изоляции.
- •Синтаксис операторов SQL, определяющих уровни изоляции
65
7.2.Реляционное исчисление
Рассмотренная в предыдущем разделе реляционная алгебра является в реляционной модели не единственной формальной системой, позволяющей задавать преобразование набора входных отношений для получения необходимого выходного отношения.
Речь идет о реляционном исчислении.
Алгебра и исчисление представляют собой два альтернативных подхода к построению формальной системы, реализующей часть реляционной модели, касающуюся операций над данными. Принципиальное отличие этих двух подходов состоит в следующем. Алгебра позволяет в явном виде записать последовательность операций (выборка, проекция, объединение и т.д.), позволяющих в конечном итоге из набора входных отношений получить необходимый результат. Другими словами, алгебра является средством, позволяющим сообщить системе, каким образом может быть получено результирующее выходное отношение.
Исчисление же представляет собой формальный способ описания выходного отношения в терминах входных отношений, не определяя способ получения этого выходного отношения.
Поясним это на примере.
Пусть исходные отношения имеют вид.
СТУДЕНТЫ
КОД_СТУД |
ИМЯ |
ГОРОД |
С2 |
Иванов |
Орел |
С5 |
Петрова |
Курск |
С4 |
Сидоров |
Москва |
С7 |
Кузнецов |
Брянск |
С8 |
Зайцева |
Липецк |
С3 |
Павлов |
Воронеж |
С10 |
Котов |
Орел |
С15 |
Лукин |
Воронеж |
С23 |
Белкин |
Воронеж |
УСПЕВАЕМОСТЬ
КОД_СТУД |
КОД_ДИСЦИПЛ |
ОЦЕНКА |
С2 |
Д2 |
5 |
С4 |
Д2 |
4 |
С8 |
Д2 |
5 |
С7 |
Д6 |
3 |
С7 |
Д1 |
4 |
С3 |
Д4 |
5 |
Рассмотрим следующий запрос: «Получить имена и города для студентов, сдавших дисциплину Д2».
Алгебраический вариант этого запроса можно представить в виде последовательности следующих действий.
1.Выбрать из отношения УСПЕВАЕМОСТЬ кортежи, для которых значение атрибута КОД_ДИСЦИПЛ равно Д2.
2.Произвести операцию естественного соединения (JOIN) полученного отношения с отношением СТУДЕНТЫ.
66
3. Выполнить проекцию полученного отношения на атрибуты ИМЯ и ГОРОД.
Этот же запрос, построенный на принципах реляционного исчисления, будет иметь следующий вид: «Получить значение атрибутов ИМЯ и ГОРОД из кортежей отношения СТУДЕНТЫ, для которых в отношении УСПЕВАЕМОСТЬ существуют кортежи с совпадающими значениями атрибута КОД_СТУД и со значениями атрибута КОД_ДИСЦИПЛ равными Д2».
Видно, что приведенная формулировка фактически задает характеристики или условия, которым должны удовлетворять кортежи результирующего отношения, не касаясь того, каким образом это отношение может быть получено, предоставляя решение этого вопроса СУБД.
Можно сказать, что формулировка запроса, использующая алгебру носит процедурный, предписывающий характер, а построенная на основе исчисления носит описательный или декларативный характер.
При этом следует иметь в виду, что при всем при этом алгебра и исчисление являются эквивалентными друг другу в том смысле, что любой запрос, построенный с использованием алгебры, может быть преобразован в форму, основанную на исчислении, и наоборот. Алгебра и исчисление являются в этом смысле двумя возможными стилями формулировки запроса, при этом, алгебра ближе к процедурным языкам программирования, а исчисление к естественному человеческому языку.
Реляционное исчисление основывается на разделе математики, называемом
исчисление предикатов.
Предикат (predicate) – это логическая функция, которая для некоторого аргумента (аргументов), принимает значения – ИСТИНА или ЛОЖЬ.
Центральным понятием реляционного исчисления является понятие переменной, принимающей значение из некоторой области определения. В связи с этим, различают два варианта реляционного исчисления: исчисление кортежей и исчисление доменов. В исчислении кортежей областью определения такой переменной являются кортежи отношения, а в исчислении доменов переменная определена на доменах отношения.
Рассмотрим основные понятия реляционного исчисления на примере исчисления кортежей.
Следующие примеры определений
RANGE OF SX IS СТУДЕНТЫ
RANGE OF DX IS ДИСЦИПЛИНЫ
RANGE OF MX IS УСПЕВАЕМОСТЬ
указывают, что областью определения переменной SX являются кортежи отношения СТУДЕНТЫ (значениями переменной SX являются кортежи этого отношения). Соответственно переменная DX определяется на множестве