- •Введение в базы данных
- •Отношения между прикладными программами и субд
- •Системы обработки баз данных
- •История баз данных
- •Организационный контекст
- •Реляционная модель
- •Коммерческие субд для микрокомпьютеров
- •Клиент-серверные приложения баз данных
- •Базы данных с использованием Интернет-технологий
- •Распределенные базы данных
- •Объектно-ориентированные субд
- •Банк данных
- •Основные понятия и определения
- •Пользователи банков данных
- •База данных
- •Архитектура базы данных. Физическая и логическая независимость
- •Схемы и отображения
- •Независимость от данных
- •Система управления базами данных – субд
- •Процесс прохождения пользовательского запроса
- •Введение в разработку баз данных
- •Метаданные
- •Индексы
- •Метаданные приложений
- •Подсистема средств проектирования
- •Подсистема обработки
- •Ядро субд
- •Создание базы данных
- •Процесс разработки базы данных
- •Моделирование данных
- •Функции субд
- •Модели данных
- •Объектные или инфологические модели данных
- •Модели данных на основе записей или даталогические
- •Реляционная модель данных
- •Преподаватели
- •Сетевая модель данных
- •. Физические модели данных
- •Концептуальное моделирование
- •Реляционная модель
- •Структура реляционных данных
- •Кортежи
- •Внешний ключ
- •Альтернативная терминология
- •Математические отношения
- •Отношения в базе данных
- •Реляционные ключи
- •Реляционная целостность
- •Целостность сущностей
- •Ссылочная целостность
- •Реляционные языки
- •Реляционная алгебра
- •Учебный проект DreamHome
- •Реляционная алгебра (продолжение)
- •Выборка (или ограничение)
- •Проекция
- •Декартово произведение
- •Объединение
- •Разность
- •Операции соединения
- •Tema-соединение (θ-join)
- •Естественное соединение
- •Внешнее соединение
- •Полусоединение
- •Пересечение
- •Деление
- •Другие языки
- •Примеры применения реляционной алгебры
- •Обзор жизненного цикла информационных систем
- •Жизненный цикл приложения баз данных
- •Проектирование базы данных
- •Проектирование баз данных на основе восходящего подхода (Метод нормализации или декомпозиции)
- •Цель нормализации
- •Проблемы, вызываемые использованием единственного отношения (аномалии обновления)
- •Проблема вставки
- •Проблема обновления
- •Проблемы удаления
- •Функциональные зависимости
- •Процесс нормализации
- •Декомпозиция без потерь и функциональные зависимости
- •Первая нормальная форма (1 нф) (из Коннолли)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (знф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 И 5 нормальные формы (4нф и 5нф)
- •Пример нормализации
- •. Другая декомпозиция отношения консультант
- •Некоторые комментарии к декомпозиционному алгоритму проектирования
- •Некоторые модификации алгоритма проектирования Избыточные функциональные зависимости
- •Транзитивные зависимости
- •Добавление атрибутов в фз
- •Правила вывода
- •Алгоритм проектирования бд методом декомпозиции (восходящий метод)
- •Проверка отношений на завершающей фазе их проектирования
- •Задачи к текущему материалу
- •Пример аномалий для 2нф
- •Нормальная форма Бойса—Кодда (нфбк) с примером аномалий для 3 формы
- •Язык sql
- •Запрос одиночной таблицы
- •Проектирование в sql
- •Выборка в sql
- •Сортировка
- •Встроенные функции sql
- •Встроенные функции и группировка
- •Запрос нескольких таблиц
- •Вложенные запросы
- •Соединение с помощью sql
- •Сравнение вложенного запроса и соединения
- •Внешнее соединение
- •Операторы exists и not exists
- •Изменение данных
- •Insert into запись
- •Insert into запись
- •Insert into третьекурсник
- •Удаление данных
- •Модификация данных
- •Запрос на sql с exist и not exist (реализация реляционной операции Деления)
- •Операция внешнего соединения таблиц в access (Мои замечания)
- •Псевдонимы столбцов и таблиц
- •Уточнения запроса
- •Теоретико-множественные операции
- •Декартово произведение наборов записей
- •Объединение наборов записей (union)
- •Пересечение наборов записей (intersect)
- •Intersect corresponding (id_компонента, Тип_компонента)
- •Вычитание наборов записей (except)
- •Операции соединения
- •Естественное соединение (natural join)
- •Условное соединение (join... On)
- •Соединение по именам столбцов (join... Using)
- •Внешние соединения
- •Левое соединение {left outer join)
- •Правое соединение {right outer join)
- •Внешнее соединение Преподаватель-Изучение-Предмет. Создание в access. Пример
- •Операторы exists и not exists
- •Низходящее проектирование бд на основе er-модели Модель «сущность—связь» и ее варианты
- •Реализация низходящего проектирования бд на основе er-модели
- •Типы сущностей
- •Способы представления сущностей на диаграмме
- •Атрибуты
- •Типы связей
- •Представление связей на диаграммах
- •Атрибуты связей
- •. Структурные ограничения
- •Показатель кардинальности
- •Степень участия
- •Примеры er-проектирования
- •Модель «сущность—связь» в другом рассмотрении
- •Элементы модели «сущность—связь»
- •Сущности
- •Атрибуты
- •Идентификаторы
- •Три типа бинарных связей
- •Диаграммы «сущность—связь»
- •Изображение атрибутов в диаграммах «сущность—связь»
- •Слабые сущности
- •Представление многозначных атрибутов при помощи слабых сущностей
- •Подтипы сущностей
- •Пример er-диаграммы
- •Документирование делового регламента
- •Модель «сущность—связь» и case-средства
- •Диаграммы «сущность—связь» в стиле uml
- •Сущности и связи в uml
- •Представление слабых сущностей
- •Представление подтипов
- •Конструкции ооп, введенные языком uml
- •Роль uml в базах данных на сегодняшний день
- •Примеры
- •Вопросы группы I
- •Вопросы группы II
- •Литература по курсу «базы и банки данных»
Проблемы, вызываемые использованием единственного отношения (аномалии обновления)
Начинающий проектировщик будет использовать отношение КОНСУЛЬТАНТ (рис. 15.3) в качестве завершенной БД. Это выглядит достаточно последовательным. Зачем разбивать отношение КОНСУЛЬТАНТ на несколько более мелких отношений, если оно способно заключать в себе все данные? Существует несколько причин, почему не следует использовать данное отношение в качестве единственного в БД. Это обусловлено тем, как будет использоваться БД, и какое воздействие на данные в отношении КОНСУЛЬТАНТ будут оказывать определенные операции. Различаются три специфичные проблемы: проблема, связанная с обновлением (модификацией) данных в БД; проблема, обусловленная необходимостью удаления кортежей; проблема, обусловленная необходимостью включения новых кортежей. Выделенные проблемы обычно называют аномалиями вставки, удаления и обновления, понимая под аномалией отклонение от нормы. Общее название этих аномалий – аномалии обновления.
Проблема вставки
Если у консультанта появляется новый консультируемый им студент, еще не закончивший курс, для него необходимо включить в БД кортеж с нулевыми (пустыми) значениями атрибутов Курс, Семестр и Оценка. Как уже не раз отмечалось, нулевых значений следует избегать. Следовательно, включение в БД нового студента невозможно вплоть до завершения им курса.
На рис. 15.4(а) показан пример того, как будет выглядеть отношение КОНСУЛЬТАНТ в случае принудительного включения в него информации о студенте, не завершившем ни одного курса (для случая использования dBASE II). Пустые символьные строки представляются пробельными полями (Курс и Семестр), в то время как нулевое численное значение в поле Оценка интерпретируется dBASE II как 0.0. Рис. 15.4(6) иллюстрирует возможные последствия появления 0.0 при отсутствии информации. Получен ответ на запрос "Выдать список Сном и Сфам для всех студентов, получивших хотя бы одну оценку ниже 2.0". В число таких студентов попал ХоумерХ, хотя он не закончил ни одного курса.
Рис. 15.4. а - результат вставки записи с пустыми полями; б - ошибочный результат выполнения запроса, вызванный наличием пустых полей
Проблема обновления
В отношении КОНСУЛЬТАНТ большое число избыточных данных. Избыточность данных всегда свидетельствует о возможности модификации только части требуемых данных с помощью операции обновления.
Отношение КОНСУЛЬТАНТ характеризуется как явной, так и неявной избыточностью. Явная избыточность заключается в том, что фамилия данного студента, номер комнаты и номер телефона могут появиться в отношении несколько раз. В экземпляре отношения КОНСУЛЬТАНТ, приведенном на рис. 15.3, номер комнаты ДжонсГ появляется четырежды. Если она обратится к своему консультанту и сообщит ему об изменении номера ее комнаты, то консультант будет вынужден проследить изменение этого номера во всех четырех кортежах во избежание противоречивости данных.
Неявная избыточность обнаруживается в том, что один и тот же номер телефона имеют все студенты, живущие в одной комнате. На рис. 15.3 телефонный номер для комнаты 120DH появляется в сочетании с именами ДжонсГ и ХаузДж. Допустим, ДжонсГ известит своего консультанта о том, что ее номер телефона изменен на 7777, забыв при этом сообщить о подруге по комнате. Если консультант изменит телефонный номер только в тех кортежах, которые содержат номер телефона ДжонсГ, то правильный номер телефона, расположенного в комнате 120DH, будет фактически утерян, поскольку в отношении будут присутствовать два различных телефонных номера для одной комнаты.
Рис. 15.5 иллюстрирует последнюю аномалию обновления. На рис. 15.5 (а) телефонный номер для ДжонсГ изменяется на 7777. На рис. 15.5 (б) приводится ответ dBASE II на запрос "Вывести перечень номеров телефонов для комнаты 120DH". В ответе на запрос содержатся два номера, что свидетельствует об ошибке, поскольку в каждой комнате имеется один телефон с одним телефонным номером. Обратите внимание, что dBASE II вывела на печать дублированные ответы на запрос. Каждый из телефонных номеров 2136 и 7777 содержится в трех различных кортежах экземпляра обсуждаемого отношения КОНСУЛЬТАНТ, и все шесть значений были распечатаны СУБД. При программировании некоторых СУБД в них закладывается функция подавления дублирования в ответах -на -запросы—если необходимость дублирования не оговаривается специально
Рис. 15.5. а - изменение номера телефона некоторого студента, б - ошибочный результат выполнения запроса, вызванный изменением номера телефона
