- •Введение в базы данных
- •Отношения между прикладными программами и субд
- •Системы обработки баз данных
- •История баз данных
- •Организационный контекст
- •Реляционная модель
- •Коммерческие субд для микрокомпьютеров
- •Клиент-серверные приложения баз данных
- •Базы данных с использованием Интернет-технологий
- •Распределенные базы данных
- •Объектно-ориентированные субд
- •Банк данных
- •Основные понятия и определения
- •Пользователи банков данных
- •База данных
- •Архитектура базы данных. Физическая и логическая независимость
- •Схемы и отображения
- •Независимость от данных
- •Система управления базами данных – субд
- •Процесс прохождения пользовательского запроса
- •Введение в разработку баз данных
- •Метаданные
- •Индексы
- •Метаданные приложений
- •Подсистема средств проектирования
- •Подсистема обработки
- •Ядро субд
- •Создание базы данных
- •Процесс разработки базы данных
- •Моделирование данных
- •Функции субд
- •Модели данных
- •Объектные или инфологические модели данных
- •Модели данных на основе записей или даталогические
- •Реляционная модель данных
- •Преподаватели
- •Сетевая модель данных
- •. Физические модели данных
- •Концептуальное моделирование
- •Реляционная модель
- •Структура реляционных данных
- •Кортежи
- •Внешний ключ
- •Альтернативная терминология
- •Математические отношения
- •Отношения в базе данных
- •Реляционные ключи
- •Реляционная целостность
- •Целостность сущностей
- •Ссылочная целостность
- •Реляционные языки
- •Реляционная алгебра
- •Учебный проект 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
- •Литература по курсу «базы и банки данных»
Некоторые модификации алгоритма проектирования Избыточные функциональные зависимости
Алгоритм проектирования БД не свободен от некоторых внутренних проблем. Одна проблема заключается в том, что процесс декомпозиции может осложниться в результате присутствия избыточных ФЗ.
Зависимость, не заключающая в себе такой информации, которая не могла бы быть получена на основе других зависимостей из числа использованных при проектировании БД, называется избыточной ФЗ. Поскольку избыточная ФЗ не содержит уникальной информации, она может быть удалена из набора ФЗ без отрицательного воздействия на результаты. Избыточные ФЗ удаляются на начальном этапе проектирования до применения алгоритма декомпозиции.
Транзитивные зависимости
Одним из простейших путей появления в наборе ФЗ избыточных зависимостей является генерация ФЗ с помощью концепции транзитивной зависимости. Транзитивная зависимость определяется следующим образом.
Если А -> В и В -> С, то А -> С - транзитивная зависимость.
Два момента следует подчеркнуть. Во-первых, транзитивная зависимость
А -> С, приведенная в определении выше, является вполне корректной зависимостью. С ней не связано ничего сомнительного. Во-вторых, если А -> В, В -> С и А -> С входят в набор ФЗ, следовательно, А -> С является избыточной и ее использование в процессе проектирования не требуется. Действительно, транзитивная зависимость А -> С причинит больше вреда, чем пользы при проектировании, и ее следует исключить из набора перед началом проектирования.
На рис. 28 приведены примеры того, как может быть упрощен набор ФЗ при помощи исключения транзитивных зависимостей. На рис. 28 (а) представлен исходный набор ФЗ до начала проектирования. На рис. 28(г) показан набор неизбыточных ФЗ, выделенных путем удаления всех транзитивных зависимостей из исходного набора. На рис. 29 показана процедура декомпозиции и получения набора НФБК-отношений.
Рис. 4 1. Удаление транзитивных зависимостей.
Рис.
29. Получение набора НФБК-отношений из
отношения, приведенного на рис. 28
Добавление атрибутов в фз
Второй путь возникновения избыточных ФЗ связан с концепцией добавления. Эта форма избыточности имеет несколько видов, из которых только два самые простые, но и крайне полезные, обсуждаются ниже.
Вид первый формулируется следующим образом (здесь А, В и Z - атрибуты, каждый из которых может быть составным):
Если А -> В, то A,Z -> В является корректной, но избыточной ФЗ. Атрибут Z был добавлен к детерминанту А без привнесения какой-либо новой информации в процесс проектирования.
Второй вид возникает в случае добавления к обеим частям данной ФЗ одного и того же атрибута с целью формирования новой зависимости:
Если А -> В, то A,Z -> B,Z является корректной, но избыточной зависимостью.
На рис. 30 приведены примеры обеих форм добавления.
Рис. 30. Примеры добавления
Правила вывода
Определения транзитивной зависимости и концепции добавления, данные выше, касаются двух правил вывода из имеющихся шести. Эти правила могут быть использованы для уменьшения, модификации исходного набора ФЗ и получения другого, эквивалентного ему набора ФЗ. Еще три правила вкратце рассматриваются ниже. Полное описание всех правил можно найти в большинстве более фундаментальных книг ('' Полное множество правил вывода состоит из трех аксиом Армстронга - рефлексивности (для любого множества атрибутов А и X АХ -> X) и уже обсуждавшихся транзитивности и дополнения, а также трех следующих из этих аксиом правил объединения, декомпозиции и псевдотранзитивности, которые обсуждаются ниже. Более подробную информацию о свойствах правил вывода можно найти, например, в книге Дж. Ульмана "Основы систем баз данных" - М., Финансы и статистика, 1983, с. 156-164.)
Два наиболее простых для понимания правила вывода связаны с объединением и декомпозицией ФЗ, которые определяются следующим образом:
Объединение ФЗ: если А -> В и А -> С, то А -> В,С
Декомпозиция ФЗ: если А->В,С то А->В и А->С
На рис. 31 дается графическое представление каждого утверждения, рис. 32 иллюстрирует способы преобразования исходного набора ФЗ в менее сложный набор неизбыточных ФЗ с помощью процедур объединения, декомпозиции и добавления.
Последнее из обещанных правил вывода называется псевдотранзитивностью.
Если X -> Y и Y,W -> Z, то X,W -> Z является избыточной в силу псевдотранзитивности.
Графический пример на псевдотранзитивность приведен на рис.33. Этот тип избыточности возникает в тех случаях, когда в получаемых ФЗ обнаруживаются составные детерминанты. Конкретный пример, иллюстрирующий данную ситуацию, будет приведен в следующей главе при рассмотрении учебной БД.
Для большинства людей графические формы диаграмм зависимостей упрощают выявление избыточных ФЗ; однако в тех случаях, когда число атрибутов и ФЗ достаточно велико, графический подход может оказаться слишком громоздким. В этом случае можно воспользоваться каким-либо известным математическим алгоритмом поиска избыточных зависимостей. Эти алгоритмы не слишком сложны для применения.
Р
ис.
31. Примеры на объединение и декомпозицию
Минимальное покрытие
Набор неизбыточных ФЗ, полученный путем удаления всех избыточных ФЗ из исходного набора с помощью 6 правил вывода, называется минимальным покрытием.
К сожалению, минимальное покрытие не всегда является уникальным, поскольку порядок, в котором осуществляется процедура удаления избыточных ФЗ, может оказать влияние на полученное минимальное покрытие. Чтобы убедиться в этом, читателю достаточно обратиться к рис. 3.2 и проверить, что в представленном случае проектирования существуют два минимальных покрытия. Первое минимальное покрытие получается при удалении из исходного набора зависимости Сном -> Тном, а второе - при удалении Сном -> Кном. Использование этих двух минимальных покрытий ведет к построению тех же самых двух БД, проектирование которых обсуждалось выше. В заключение следует подчеркнуть один важный момент, связанный с удалением избыточных ФЗ из исходного набора: избыточные ФЗ следует удалять по одной, каждый раз заново анализируя новый набор на предмет присутствия в нем избыточных ФЗ.
Рис. 32. Упрощение диаграммы ФЗ с помощью правил вывода
Рис.
33. Графические примеры на псевдотранзитивность
