- •Установочный модуль
- •Введение
- •Модуль 1
- •Реляционная алгебра
- •Отсутствующие данные
- •Пустые значения
- •Неопределенные значения
- •Интерпретации
- •Правила вычисления выражений
- •Следствия
- •Проверка условий
- •Реляционные объекты данных
- •Формальные определения
- •Домены и атрибуты
- •Схема отношения
- •Именованное значение атрибута
- •Кортеж
- •Отношение
- •Схема базы данных
- •База данных
- •Операции реляционной алгебры
- •Унарные операции
- •Бинарные операции
- •Варианты операции соединения
- •Производные операции
- •Пример построения выражения реляционной алгебры
- •Понятие базовых и виртуальных отношений
- •Понятие полноты реляционной алгебры
- •Формирование запросов на языке SQL
- •Металингвистические символы
- •Реализация операций реляционной алгебры
- •Пример использования подзапросов
- •Группирующие запросы
- •Упорядочение результатов
- •Вопросы для самоконтроля
- •Упражнения
- •Построение выражений реляционной алгебры
- •Модуль 2
- •Базовые и виртуальные отношения
- •Типы данных
- •Базовые типы данных
- •Типы данных, определяемые пользователем
- •Первичные и кандидатные ключи
- •Создание базовых отношений
- •Индексы
- •Модификация базовых отношений
- •Вставка строк
- •Обновление строк
- •Удаление строк
- •Целостность
- •Декларативная поддержка
- •Пример декларативной поддержки целостности
- •Транзакции и блокировки
- •Триггеры
- •Виртуальные отношения
- •Вопросы для самоконтроля
- •Упражнения
- •Декларативная поддержка целостности
- •Модуль 3
- •Нормальные формы
- •Функциональные зависимости (ФЗ)
- •Правила вывода Армстронга
- •Производные правила вывода
- •Независимость правил Армстронга
- •Полнота системы правил Армстронга
- •Нормальные формы
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)
- •Пример построения нормализованных схем отношений
- •Вопросы для самоконтроля
- •Модуль 4
- •Проектирование схем баз данных
- •Уровни логической модели
- •Миграция ключей и виды связей
- •Классификация кластеров
- •Иерархическая рекурсия
- •Абстрактная схема
- •Обобщения
- •Пример реализации иерархической рекурсии
- •Сетевая рекурсия
- •Абстрактная схема
- •Сетевая реализация иерархической рекурсии
- •Обобщения
- •Пример реализации сетевой рекурсии
- •Ассоциация
- •Детализация связей многие-ко-многим
- •Обобщения
- •Пример реализации ассоциации
- •Обобщение
- •Абстрактная схема
- •Пример реализации обобщения
- •Композиция
- •Абстрактная схема
- •Пример реализации композиции
- •Агрегация
- •Абстрактная схема
- •Пример реализации агрегации
- •Унификация атрибутов
- •Вопросы для самоконтроля
- •Упражнения
- •Иерархическая рекурсия
- •Сетевая рекурсия
- •Ассоциация
- •Обобщение
- •Композиция
- •Агрегация
- •Дополнительные главы
- •Технологии баз данных
- •Информационные системы
- •Жизненный цикл ИС
- •СУБД и БД
- •Жизненный цикл БД и средства проектирования
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Постреляционная модель данных
- •Объектно-ориентированные модели данных
- •XML как модель данных
- •Многомерная модель данных (OLAP)
- •Основные функции СУБД
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление БД после сбоев
- •Поддержка языков баз данных
- •Типовая организация СУБД
- •Модели взаимодействия с БД
- •Модель с централизованной архитектурой
- •Модель с автономными персональными компьютерами
- •Архитектура «файл-сервер»
- •Архитектура «клиент-сервер»
- •Архитектура «клиент-сервер» трехзвенная
- •Распределенные базы данных
- •Технология тиражирования данных
- •Понятие «фрактал»
- •Геометрические фракталы
- •Алгебраические фракталы
- •Стохастические фракталы
- •Системы итерируемых функций
- •Вопросы для самоконтроля
- •Литература
- •Список иллюстраций
- •Список таблиц
декса используется его уточненное имя.
После создания индекса он является самостоятельным объектом базы данных. Когда пользователь выполняет обращающийся к индексированному столбцу запрос, СУБД автоматически анализирует индекс для поиска требуемых значений.
При последующих модификациях базового отношения СУБД будет автоматически поддерживать индекс в актуальном состоянии, что, конечно, создает дополнительную нагрузку на систему.
Хотя создание индекса допускается в любой момент, при его построении для уже заполненной данными таблицы могут возникнуть проблемы, связанные с неуникальностью данных в различных строках. Следовательно, уникальные индексы имеет смысл создавать непосредственно при создании таблицы с помощью объявлений первичных и кандидатных ключей. В результате система сразу возьмет на себя контроль за уникальностью значений данных в соответствующих столбцах.
3.5. Модификация базовых отношений
Термин «модификация» является обобщающим по отношению к операциям вставки, обновления и удаления кортежей (строк) из базовых отношений (таблиц).
3.5.1. Вставка строк
Для вставки строк в существующую таблицу используется оператор insert в одной из следующих форм 1-3:
insert into имя_таблицы(имя_столбца,..)
оператор_select
insert into имя_таблицы(имя_столбца,..) values({default | null | выражение},..)
insert into имя_таблицы default values
Примечание. В языке SQL список имен столбцов в формах 1, 2 не является обязательным. Если он не указан, оператор insert должен включать значения для всех не автоматически вычисляемых столбцов в таблице, а порядок их должен соответствовать порядку столбцов в таблице. Но это очень плохой стиль программирования, так как оператор вставки становится зависимым от порядка объявления атрибутов в операторе создания таблицы. Имена столбцов лучше указывать явно
Вформе 1 в таблицу вставляется набор строк, возвращаемый оператором select.
Вформе 2 в таблицу вставляется единственная строка. Вместо указания явного значения столбца для этой строки в виде выражения могут использоваться ключевые слова default или null для вставки значений по умолчанию или null-значений соответственно. Выражение в качестве значения столбца не может содержать оператор select.
Вформе 3 в таблицу вставляется единственная строка, состоящая из значений по умолчанию. Вставка значения по умолчанию подменяется на вставку null-значения, если значение по умолчанию явно не задано. Вставка строки с null-значениями пройдет успешно, если только null-значения допустимы для соответствующих столбцов.
Оператор insert применим и к так называемым обновляемым представлениям, допускающим однозначную интерпретацию операций вставки, обновления или удаления строк. Применительно
кпредставлениям оператор insert должен сводиться к вставке строки или строк лишь в одну из
таблиц, на которых базируется представление.
3.5.2. Обновление строк
Оператор обновления update позволяет изменять значения в нескольких строках таблицы:
update имя_таблицы
set {имя_столбца = новое_значение},.. [where условие]
Подобно оператору вставки insert, один оператор обновления update может модифицировать только одну таблицу или одно представление. За ключевым словом set следует перечень имен подлежащих обновлению столбцов с указанием их новых значений. Новое значение может быть константой или выражением, которое также может ссылаться на сам столбец. Например, следующий оператор будет уменьшать значения в столбце Цена на 10%:
update Товары
set Цена = Цена * 0.90
Фраза where не является обязательной. Если она указана, то должна задавать строки, подлежащие обновлению. Если фраза where отсутствует, то будут обновляться все строки.