- •Введение
- •Глава 1 информационные системы
- •1.1 Информация как ресурс
- •1.2 Файловые системы
- •1.3 Информационные системы, использующие базы данных
- •1.3.1 Иерархические и сетевые модели данных
- •1.3.2 Реляционные системы управления базами данных
- •1.4 Компоненты информационных систем
- •1.4.1 Технические средства
- •1.4.2 Программное обеспечение
- •1.4.3 Данные
- •1.4.4 Пользователи
- •1.4.5 Организационное обеспечение
- •1.4.6 Отношения между компонентами системы
- •1.5 Основы проектирования информационных систем
- •1.5.1 Жизненный цикл программного обеспечения
- •1.5.2 Модели жизненного цикла по
- •1.5.3 Подходы к проектированию ис
- •1.6 Задания и вопросы для повторения
- •2.2 Подходы к проектированию баз данных
- •2.3 Создание базы данных
- •2.4 Основы концептуального проектирования баз данных
- •Объекты и отношения
- •2.3.2. Атрибуты
- •2.3.3 Ключи
- •2.3.4 Наследование
- •2.3.5 Составные объекты
- •2.3.6 Моделирование концептуальных и физических объектов
- •2.4 Реляционная модель данных
- •2.4.1 Поддержка целостности данных
- •Процесс нормализации таблиц
- •2.4.3 Пример построения нормализованной базы данных
- •2.4.4 Преобразование концептуальной модели в реляционную
- •2.5 Элементы er-моделирования
- •2.5.1 Основные понятия модели «сущность-связь»
- •2.5.2 Основные графические обозначения элементов модели
- •2.6 Заключительный этап проектирования
- •2.7 Сравнение концептуального и реляционного моделирования
- •2.8 Вопросы и задания для повторения
- •2.9 Упражнения и задачи
- •2.10 Проекты и профессиональные вопросы
- •Глава 3 реляционная алгебра и реляционное исчисление
- •3.1 Реляционная алгебра
- •3.1.1 Обзор реляционной алгебры
- •3.1.2 Теоретико-множественные операторы
- •3.1.3 Специальные реляционные операторы
- •3.1.4 Зависимые реляционные операторы
- •3.1.5 Примитивные реляционные операторы
- •3.2 Реляционное исчисление
- •3.2.1 Целевой список и определяющее выражение
- •3.2.2 Квантор существования
- •3.2.3 Квантор всеобщности
- •3.3 Заключение
- •3.4 Вопросы на повторение
- •3.5 Упражнения и задачи
- •Глава 4 управление реляционной базой данных с помощью sql
- •4.1 Элементы Transact-sql
- •Комментарии
- •4.1.2 Алфавит
- •4.1.3 Идентификаторы
- •Выражения
- •4.1.5 Ключевые слова
- •Операторы
- •4.1.7 Логические операторы
- •Типы данных
- •- Функции Transact-sql
- •4.2 Выборка данных из таблиц
- •4.2.1 Структура команды select
- •Результаты выборки
- •Отбор столбцов
- •Select Фамилия, Город from Гостиница.Dbo.Клиент
- •4.2.4 Определение заголовков столбцов
- •Выражения в выборках
- •Отбор записей
- •Порядок вывода данных
- •Котов Кузьма Кузьмич
- •Группировка данных
- •Отбор данных для групп
- •4.2.10 Директива compute
- •Выборка данных из нескольких таблиц
- •Объединение с помощью предложения where
- •Внутреннее объединение
- •4.2.14 Объединение и опция join
- •Оператор union
- •Подзапросы и структурированные запросы
- •Создание таблицы на основе выборки
- •Предложение for browse
- •4.3 Модификация данных
- •Добавление данных
- •Изменение данных
- •Удаление строк
- •Управляющие конструкции
- •Создание таблиц базы данных
- •4.6 Транзакции и блокировки
- •4.6.1 Понятие транзакций и блокировок
- •Управление транзакциями
- •Явные транзакции
- •Автоматические транзакции
- •Неявные транзакции
- •Управление блокировками
- •4.7 Хранимые процедуры
- •4.7.1 Типы хранимых процедур
- •Создание хранимых процедур
- •4.8 Триггеры
- •Создание триггера
- •Ограничения при создании триггеров
- •Использование триггеров
- •Вопросы на повторение
- •4.10 Упражнения и задачи
- •4.11 Проекты и профессиональные вопросы
- •Заключение
- •Приложение а sql скрпит, для создания таблиц согласно модели бд "Университет"
- •Литература
Управление транзакциями
SQL Server 2000 поддерживает три вида определения транзакций:
явное;
автоматическое;
подразумеваемое.
До сих пор мы в основном говорили о локальных транзакциях, выполняемых внутри одной БД. Поддержка локальных транзакций обеспечивается практически всеми СУБД. Однако нередко возникает необходимость в одной транзакции обратиться к данным, хранящимся в разных БД. Эту возможность позволяют реализовать распределенные транзакции.
Явные транзакции
Явные транзакции требуют, чтобы пользователь явно указал начало и конец транзакции. Для управления транзакциями применяют следующие команды:
BEGIN TRAN[SACTION] [<имя> [WITH MARK [<метка>]]]
Имя транзакции обычно используется только при работе с вложенными транзакциями.
Аргумент WITH MARK <метка> позволяет маркировать транзакцию в журнале транзакций. Подобная маркировка требуется при восстановлении резервной копии журнала транзакций, возвращая БД в состояние, в котором она была до начала транзакции.
COMMIT TRAN[SACTION] <имя>
Команда определяет конец транзакции.
ROLLBACK [TRAN[SACTION]] [<ИМЯ>]
Эта команда служит для прерывания транзакции.
Автоматические транзакции
По умолчанию SQL Server работает в режиме автоматического начала транзакций. В этом режиме каждая команда рассматривается как отдельная транзакция. Пользователю не нужно в явном виде указывать начало и конец транзакции. Если команда выполнена успешно, то сделанные ей изменения фиксируются. Если при выполнении команды произошла ошибка, то сделанные изменения отменяются и система возвращается в первоначальное состояние.
Вообще сервер работает только в одном из двух режимов определения транзакции: автоматическом или неявном. Сервер не может находиться в режиме исключительно явного определения транзакций. Этот режим работает поверх двух других.
Для установки режима автоматического определения транзакций используется команда:
SET IMPLICIT_TRANSACTION OFF
Неявные транзакции
При работе в режиме неявного начала транзакции сервер автоматически начинает новую транзакцию после завершения предыдущей. Пользователь ничего не должен делать, чтобы начать транзакцию. Транзакция продолжается до тех пор, пока пользователь не укажет команду отката или фиксации транзакции.
Сервер автоматически заканчивает текущую транзакцию и начинает новую, если встречается одна из следующих команд:
ALTER TABLE – изменение структуры таблицы;
CREATE – создание объекта БД;
DELETE
DROP
FETCH
GRANT – разрешение доступа к объектам данных;
INSERT
OPEN
SELECT
UPDATE
Для установки режима неявного определения транзакции используется команда
SET IMPLICIT_TRANSACTION ON
Управление блокировками
Всю работу по управлению блокировками выполняет специальный компонент сервера – менеджер блокировок. Однако при необходимости в запросе можно явно, какой тип блокировки необходимо использовать.
Перед выполнением изменений данных транзакция запрашивает менеджер блокировок о возможности установки соответствующей блокировки. Если требуемый ресурс используется другим процессом, то менеджер блокировок либо отклоняет запрос на блокировку, либо ставит его в очередь. Время ожидания разблокирования ресурса можно регулировать командой
SET LOCK_TIMEOUT nMS,
Где nMS – число миллисекунд. Эта команда действует только на текущее соединение.
Максимальное число блокировок, одновременно устанавливаемых на сервере, задается командой:
EXEC sp_configure ‘locks’, n
Число блокировок может колебаться в пределах 5000 – 2 147 483 647. По умолчанию n = 0, что означает автоматическое конфигурирование сервера.
Менеджер блокировок автоматически оценивает, какое количество данных необходимо блокировать, и устанавливает тип блокировки. Поддерживаются следующие уровни блокирования:
Блокировка на уровне строки таблицы используется при добавлении новой записи.
Блокировка на уровне индекса. При этом блокируется часть индекса, соответствующая изменяемым в транзакции данным.
Блокировка на уровне страницы.
Блокировка на уровне таблицы.
Блокировка на уровне БД.
Основные типы блокировок
Коллективные блокировки. Этот тип блокировок накладывается при выполнении чтения данных. Коллективную блокировку на одни и те же данные могут сразу устанавливать несколько пользователей. Изменение данных запрещено.
Блокировка обновления устанавливается, когда транзакция пытается изменить данные. Если установлен этот тип блокировки, то коллективная блокировка невозможна. После того, как все блокировки, установленные другими пользователями сняты, блокировка обновления заменяется на монопольную блокировку.
Монопольная блокировка используется, если транзакция изменяет данные.
Блокировка массивного обновления накладывается сервером при выполнении операций массивного копирования в таблицу. При этом запрещается обращение к таблице любым процессам.
