- •Содержание
- •Список сокращений
- •Введение
- •Основные понятия теории баз данных
- •Понятие системы баз данных
- •Базы данных и их назначение
- •Данные и модели данных
- •Типы систем баз данных
- •Архитектура системы баз данных
- •Уровни архитектуры
- •Система управления базами данных
- •Система управления передачей данных
- •Архитектура «клиент-сервер»
- •Утилиты
- •Распределенная обработка
- •Семантическое моделирование
- •Общий подход
- •Модель «сущность/связь»
- •Введение в реляционные базы данных
- •Реляционная модель
- •Отношения и переменные-отношения
- •Оптимизация
- •Каталог
- •Базовые переменные отношения и представления
- •Транзакции
- •Введение в язык sql
- •Обзор языка sql
- •Каталог в sql
- •Представления
- •Транзакции в sql
- •Взаимодействие приложений и субд
- •Домены, отношения и базовые переменные-отношения
- •Значения отношений
- •Средства sql
- •Реляционная алгебра
- •Введение в реляционную алгебру
- •Реляционная замкнутость
- •Синтаксис
- •Семантика
- •Примеры
- •Назначение реляционной алгебры
- •Реляционное исчисление
- •Введение в реляционное исчисление
- •Исчисление кортежей
- •Примеры для исчисления кортежей
- •Средства языка sql
- •Целостность данных
- •Введение в целостность данных
- •Ограничения типа
- •Ограничения атрибута
- •Ограничения переменной-отношения
- •Ограничения баз данных
- •«Золотое правило»
- •Ограничения состояния и ограничения перехода
- •Средства языка sql
- •Функциональные зависимости
- •Введение
- •Основные определения
- •Тривиальные и нетривиальные зависимости
- •Замыкание множества зависимостей
- •Замыкание множества атрибутов
- •Неприводимые множества зависимостей
- •Нормализация: формы 1нф, 2нф, 3нф и нфбк
- •Введение
- •Декомпозиция без потерь и функциональные зависимости
- •Первая, вторая и третья нормальные формы
- •Нормальная форма Бойса-Кодда
- •Нормализация: более высокие нормальные формы
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Общая схема процедуры нормализации
- •Вопросы для самопроверки
- •Дополнительная литература
Транзакции
Как уже отмечалось, транзакция – логическая единица работы, обычно включающая несколько операций над базой данных. Для пользователя должна иметься возможность указать системе, что отдельные операции являются частью одной транзакции. Для этого используются операции BEGIN TRANSACTION, COMMIT и ROLLBACK. Как правило, транзакция начинается при выполнении операции BEGIN TRANSACTION и прекращается при выполнении операции COMMIT или ROLLBACK.
BEGIN TRANSACTION /*Перевести деньги со счета A на счет B*/
UPDATE account A /* Снятие денег со счета A */
UPDATE account B /* Помещение денег на счет B */
IF <проверка условия> THEN
COMMIT; /* Нормальное завершение */
ELSE ROLLBACK /* Аварийное завершение(откат)*/
ENDIF
Свойства транзакций:
Атомарность – гарантия (с логической точки зрения), что операции будут выполнены полностью или не выполнены вовсе, даже если в системе до окончания процесса выполнения произойдет сбой.
Продолжительность – гарантия того, что если транзакция успешно выполнила оператор COMMIT, то все выполненные ею изменения будут реализованы в БД, даже если в системе в какой-то момент произойдет сбой.
Изолированность. Если в системе выполняется одновременно несколько транзакций, то все изменения, сделанные одной из них, не будут видны остальным, пока она не выполнит оператор COMMIT.
Упорядоченность. При параллельном выполнении нескольких транзакций, операции которых чередуются между собой, гарантируется, что осуществление этих операций будет упорядоченным (serializable), т.е. результат будет таким же, как при строго последовательном выполнении этих же транзакций в произвольном порядке.
Введение в язык sql
SQL (Structured Query Language) является стандартным языком работы с реляционными базами данных и в настоящее время поддерживается практически всеми продуктами, представленными на рынке. Он был разработан в компании IBM Research в начале 1970-х годов. Первой серьезной реализацией этого языка был продукт-прототип System R компании IBM; впоследствии он был реализован в многочисленных коммерческих продуктах компании IBM, так и других изготовителей. В 1992 году вышел стандарт SQL/92, а в 1999 году – SQL3 (или SQL/99).
Необходимо отметить несколько его особенностей:
Язык SQL первоначально разрабатывался конкретно как подъязык данных, однако впоследствии в стандарт были включены постоянные хранимые модули (Persistent Stored Modules – PSM), после чего язык стал полностью вычислительным.
В языке SQL вместо терминов «отношение» и «переменная-отношение» используется термин «таблица», так как именно он закреплен в стандарте.
Язык SQL – язык очень большого объема. Документ по его стандарту содержит свыше 1000 страниц. Поэтому в этом курсе будут рассмотрены лишь некоторые самые важные его аспекты.
Язык SQL не полностью соответствует реляционной модели, в нем имеется ряд как недоделок, так и переделок. Однако практически все реляционные продукты поддерживают именно его. Поэтому так важно его знание специалисту, работающему с реляционными системами баз данных.
