- •Глава 1. Базы данных и системы управления 9
- •Глава 2. Организация доступа к данным 45
- •Глава 3. Реляционная алгебра 60
- •Глава 4. Основы sql 67
- •Глава 5. Проектирование реляционных баз данных 89
- •Глава 6. Взаимодействие sql с приложениями 116
- •Глава 7. Некоторые проблемы администрирования баз данных 154
- •Базы данных и системы управления
- •Файловые системы
- •Концепция баз данных
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация
- •Поддержка языков баз данных
- •Трехуровневая модель архитектуры систем баз данных
- •Модели данных
- •Характеристика связей
- •Компьютерно-ориентированные модели данных
- •Реляционный подход
- •Ключи и целостность реляционных данных
- •Моделирование концептуальной схемы базы данных
- •Организация доступа к данным
- •Страницы и файлы
- •Индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Методы сжатия
- •Метод дифференциального сжатия
- •Иерархические методы сжатия
- •Кодирование по методу Хаффмена
- •Реляционная алгебра
- •Традиционные реляционные операции
- •Специальные реляционные операции
- •Дополнительные реляционные операции
- •Примеры использования реляционной алгебры для выражения словесных запросов в виде формул
- •Основы sql
- •Типы данных
- •Строковые типы данных
- •Битовые типы данных
- •Точные числовые типы данных
- •Вещественные числовые типы данных
- •Календарные типы данных
- •Значения null
- •Создание и обслуживание таблиц
- •Запрос на выборку
- •Статистические функции
- •Создание соединений
- •Вложенные запросы
- •Запрос на объединение
- •Запросы, выполняющие реляционные операции вычитания, пересечения и деления
- •Запросы на изменение
- •Перекрестные запросы
- •Проектирование реляционных баз данных
- •Нормализация отношений
- •Функциональные зависимости
- •Н ормальные формы, обоснованные функциональными зависимостями
- •Нормальная форма Бойса–Кодда
- •Нормальные формы, обоснованные более сложными зависимостями
- •Процедура нормализации и проектирования
- •Пример проектирования базы данных
- •Назначение и предметная область
- •Проектирование базы данных
- •Взаимодействие sql с приложениями
- •Встраивание sql-операторов в программный код
- •Тип курсора
- •Триггеры
- •Хранимые процедуры
- •Стандартные интерфейсы для доступа к данным
- •Информационное окружение веб-сервера
- •Стандарт odbc
- •Уровни соответствия
- •Уровень соответствия odbc
- •Задание имени источника данных odbc
- •Расширяемый язык разметки xml
- •Xml как язык разметки
- •Материализация хмl-документов с помощью xslt
- •Создание хмl-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Дополнительные реляционные операции
Описанные выше элементы реляционной алгебры не содержат средств для скалярных вычислений. Для обеспечения таких возможностей предназначена операция расширения EXTEND. С помощью этой операции создается новое отношение, похожее на исходное, но содержащее дополнительный атрибут, значения которого получены посредством некоторых скалярных вычислений:
Extend a add expr as z;
Результатом этого выражения будет отношение с заголовком, эквивалентным заголовку отношения А, расширенному новым атрибутом Z, который рассчитывается скалярным выражением expr для кортежа отношения А. При этом отношение А не должно иметь атрибута Z и выражение exp не должно ссылаться на атрибут Z. Кардинальное число результата равно кардинальному числу отношения А, степень равна степени отношения А плюс единица.
Пример: Подсчитать количество поставок, сделанных каждым поставщиком.
EXTEND Поставщики ADD COUNT ((Поставки RENAME П№ AS X) WHERE X= П№) AS Кол_П;
Результат действия этого выражения показан на рис. 3.3.1. Для данного поставщика в отношении ПОСТАВКИ выражение
((Поставки RENAME П№ AS X) WHERE X= П№);
д
П№
Имя_П
Статус
Гор
Кол_П
П1
Волк
20
Брест
6
П2
Заяц
10
Минск
2
П3
Лев
30
Гродно
1
П4
Лиса
20
Минск
3
П5
Бык
30
Брест
0
Рис. 3.3.1
Итоговая функция берет в качестве аргумента множество значений и возвращает одно значение. Кроме функции COUNT (подсчет) итоговыми функциями являются SUM (сумма), AVG (среднее значение), MAX (максимальное значение), MIN (минимальное значение), StDev (среднеквадратичное отклонение от среднего значения поля) и Var (дисперсия значений поля). Если аргумент такой функции будет пустым множеством, то функции COUNT и SUM возвращают нуль, функции MAX и MIN возвращают максимальное и минимальное значения соответствующего домена.
Таким образом, операция расширения обеспечивает возможность горизонтального или построчного вычисления. Аналогичную функцию для вертикальных вычислений выполняет операция подведения итогов SUMMARIZE:
SUMMARIZE A BY (A1,A2,…,An) ADD EXP AS Z;
Здесь A1,A2,…,An – отдельные атрибуты отношения А. Результатом этого выражения будет отношение с заголовком {A1,A2,…,An,Z} и с телом, содержащим все такие кортежи t, которые являются кортежами проекции отношения А по атрибутам A1,A2,…,An, расширенного значением для нового атрибута Z. Такое новое значение Z подсчитывается вычислением итогового значения exp по всем кортежам отношения А, которое имеет те же самые значения для атрибутов A1,A2,…,An, что и кортеж t. Кардинальное число результирующего отношения равно кардинальному числу проекции отношения А по атрибутам A1,A2,…,An, а степень равна степени такой проекции плюс единица. Например, количество поставок, сделанных каждым поставщиком может быть получено при помощи выражения
SUMMARIZE Поставки BY (П№) ADD COUNT AS Кол_П;
Р
П№
Кол_П
П1
6
П2
2
П3
1
П4
3
Рис. 3.3.2.
Реляционная модель может включать также операции реляционного присвоения, которые дают возможность «запоминать» значение некоторых алгебраических выражений в базе данных и таким образом изменять состояние базы данных или, иначе говоря, обновлять базу данных:
Поставки Поставки MINUS (Поставки WHERE Кол = 0);
В реляционных системах существуют также явные операторы обновления INSERT, DELETE и UPDATE:
INSERT (Поставщики where Гор_П = Минск ) into Temp;
(здесь выбранные данные вставлены в отношение Temp, которое должно быть совместимым по типу с отношением Поставщики).
Update (Поставщики where Гор_П = Брест) статус 40;
DELETE Поставщики where Статус < 20;
Все операции обновления действуют на уровне множеств (например, операция DELETE удаляет множество кортежей из целевого отношения) и должны контролироваться с помощью предиката рассматриваемого отношения.