
- •Введение. Структура предмета. Основные понятия
- •1.История развития баз данных
- •2. История развития субд
- •4.Основные понятия и определения
- •Контрольные вопросы
- •Раздел 1. Структура и технологии субд. Модели данных
- •Тема1.1 Архитектура и технико-экономические характеристики субд. Архитектура бд.
- •1. Основные функции субд
- •2. Обобщенная архитектура субд
- •3. Процесс прохождения пользовательского запроса
- •4. Архитектура бд
- •Контрольные вопросы
- •Тема 1.2 Модели данных. Основные понятия и классификация
- •1. Классификация моделей данных
- •3 Пример разработки простой er-модели
- •Контрольные вопросы
- •Тема 1.3 Иерархическая, сетевая и реляционная модели данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •Базовые понятия реляционных баз данных
- •Контрольные вопросы
- •Тема 1.4 Физические модели данных
- •1. Файловые структуры, используемые для хранения информации в базах данных
- •2. Индексные файлы
- •3. Моделирование отношения 1:м с использованием однонаправленных указателей
- •Контрольные вопросы
- •Тема 1.5 Целостность бд. Нормальные формы
- •1. Основные понятия
- •Null-значения
- •Трехзначная логика (3vl)
- •Потенциальные ключи
- •2.Целостность сущностей
- •2 . Основные нормальные формы
- •Аномалии обновления
- •Определение функциональной зависимости
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Контрольные вопросы
- •Тема 1.6 Операции и основные понятия реляционной алгебры и реляционного исчисления
- •1. Реляционная алгебра
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •2. Теоретико-множественные операторы
- •3. Специальные реляционные операторы
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение. Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.Е. Атрибуты с одинаковыми именами и определенные на одинаковых доменах).
- •Контрольные вопросы
- •Тема 1.7 Проектирование реляционной базы данных
- •1. Методология проектирования базы данных
- •2. Этапы проектирования базы данных
- •Контрольные вопросы
- •Раздел 2. Язык sql и его возможности
- •Тема 2.1 История языка sql. Создание и редактирование схемы бд
- •1. Развитие языка sql
- •Что такое пользователь?
- •Числовые константы
- •2 Создание базы данных и структуры таблицы
- •3. Модификация структуры таблицы и удаление таблицы
- •4. Индексы
- •5. Добавление новых данных
- •Однострочный оператор insert
- •Многострочный оператор insert
- •Утилиты пакетной загрузки
- •6. Удаление существующих данных
- •Оператор delete с вложенным запросом
- •7. Обновление существующих данных
- •Обновление всех строк
- •Контрольные вопросы
- •Тема 2.2 Организация запросов к базе данных.
- •1. Формирование запросов к одной таблице
- •2. Статистические функции
- •3. Группировка и агрегатные функции в запросах
- •4. Объединение таблиц
- •Объединения таблиц по равенству значений в столбцах и другие виды объединений
- •5. Объединение таблицы с собой
- •6. Теоретико-множественные операции с таблицами
- •7. Выполнение сложных запросов с вложенными подзапросами
- •Использование выражений в подзапросах
- •Контрольные вопросы
- •Тема 2.3 Виртуальные таблицы Цель: рассмотреть понятие «виртуальная таблица»; назначение виртуальных таблиц и область их использования
- •1. Команда create view
- •2. Групповые представления
- •3. Представления и объединения
- •4. Представления и подзапросы
- •5. Удаление и модификация представлений
- •Контрольные вопросы
- •1.Определение триггера и его назначение
- •2. Типы триггеров
- •Создание триггеров dml
- •Создание триггеров замещения
- •Создание системных триггеров
- •Другие аспекты использования триггеров
- •3. Хранимые процедуры
- •Хранимые функции
- •Контрольные вопросы
- •Тема 2.5 Защита информации в бд
- •1. Общие понятия привилегий
- •Стандартные привилегии
- •2. Предоставление привилегий с использованием представлений
- •3. Другие типы привилегий
- •Контрольные вопросы
- •Тема 2.6 Транзакции и управлении ими
- •1. Что такое транзакция
- •2 . Операторы commit и rollback
- •3. Журнал транзакций
- •5. Транзакции и работа в многопользовательском режиме
- •Проблема пропавшего обновления
- •Проблема промежуточных данных
- •Проблема несогласованных данных
- •Проблема строк-призраков
- •6. Параллельные транзакции
- •Уровни блокировки
- •Жесткая и нежесткая блокировки
- •Тупиковые ситуации
- •Усовершенствованные методы блокировки
- •Контрольные вопросы
- •Тема 2.7 Распределенные базы данных. Модели серверов
- •1.Распределенная обработка данных
- •2. Модели «клиент—сервер» в технологии баз данных
- •Двухуровневые модели
- •Модель сервера приложений
- •3. Модели серверов баз данных
Проблема промежуточных данных
На рис. 6.6 изображена та же программа для обработки заказов, что и на рис. 6.5. Джо снова начинает принимать от клиента заказ на 100 изделий ACI-41004. На этот раз его копия программы обработки заказов запрашивает таблицу products, выясняет, что в наличии имеется 139 изделий, и обновляет таблицу products, показывая, что после принятия заказа в наличии осталось 39 изделий. После этого Джо начинает обсуждать с клиентом относительные достоинства изделий ACI-41004 и АСГ-41005. Тем временем клиент Мэри пытается заказать 125 изделий ACI-41004. Ее копия программы запрашивает таблицу products, выясняет, что в наличии имеется только 39 изделий, и отказывается принять заказ. Программа генерирует также сообщение для менеджера по снабжению о том, что необходимо закупить изделия ACI-41004, которые пользуются большим спросом. А первый клиент после беседы с Джо решает, что изделия ACI-41004 ему вовсе не нужны, и программа выполняет оператор rollback для отмены транзакции.
Поскольку программа Мэри имела доступ к промежуточным данным программы Джо, ее клиенту было отказано в приеме заказа, а менеджер по снабжению закажет дополнительное количество изделий ACI-41004, хотя их на складе уже есть 139 штук. Ситуация могла бы быть еще хуже, если бы клиент Мэри решил заказать 39 изделий. В этом случае программа Мэри занесла бы в таблицу products число нуль, показывая, что изделия ACI-41004 на складе отсутствуют. Но после операции rollback, отменяющей транзакцию Джо, СУБД восстановит в таблице число 139, хотя 39 изделий из них уже предназначены клиенту Мэри. В данном примере проблема заключается в том, что программа Мэри имела доступ к промежуточным результатам программы Джо и, опираясь на них, занесла в базу данных ошибочную информацию.
Р
исунок
6.6 - Проблема промежуточных данных
Проблема несогласованных данных
На рис. 6.7 изображена программа для обработки заказов. Джо снова начинает принимать от своего клиента заказ на 100 изделий ACI-41004. Вскоре после этого Мэри начинает со своим клиентом разговор об этих же изделиях, и ее программа выясняет их количество на складе. Затем клиент начинает расспрашивать Мэри об изделиях ACI-41005, и программа Мэри выполняет запрос о наличии этих изделий. Тем временем клиент Джо решает заказать изделия ACI-41004, поэтому его программа обновляет соответствующую строку и выполняет оператор commit, завершая транзакцию по приему заказа. После некоторых размышлений клиент Мэри решает заказать изделия ACI-41004, которые Мэри предлагала ему вначале. Ее программа вновь запрашивает информацию об изделиях ACI-41004. Но новый запрос показывает, что в наличии имеется только 39 изделий вместо 139, показанных предыдущим запросом несколько мгновений тому назад.
В данном примере, в отличие от двух предыдущих, состояние базы данных правильно отражает ситуацию в реальной жизни. В наличии осталось только 39 изделий ACI-41004, поскольку клиент заказал у Джо 100 штук. Из-за того что Мэри увидела промежуточные данные программы Джо, ничего особенного не произошло — заказ от Джо был успешно принят. Однако с точки зрения программы Мэри база данных не была целостной в течение выполняемой ею транзакции. В начале транзакции некоторая строка содержала одни данные, а позднее в той же самой транзакции она содержала другие данные, поскольку "внешние события" нарушили целостное восприятие базы данных этой программой. Такая несогласованность может привести к различным проблем даже в том случае, если программа Мэри не будет обновлять базу данных, опираясь на результаты первого запроса. Например, если ее программа накапливает итоговые суммы или собирает статистику, то нет гарантии, что она отражает правильные данные. В этом примере проблема заключается в том, что программа Мэри имела доступ к результатам обновления, выполненного программой Джо для строки, которую программа Мэри уже читала ранее.
Р
исунок
6.7 - Проблема несогласованных данных