- •Введение в базы данных
- •Отношения между прикладными программами и субд
- •Системы обработки баз данных
- •История баз данных
- •Организационный контекст
- •Реляционная модель
- •Коммерческие субд для микрокомпьютеров
- •Клиент-серверные приложения баз данных
- •Базы данных с использованием Интернет-технологий
- •Распределенные базы данных
- •Объектно-ориентированные субд
- •Банк данных
- •Основные понятия и определения
- •Пользователи банков данных
- •База данных
- •Архитектура базы данных. Физическая и логическая независимость
- •Схемы и отображения
- •Независимость от данных
- •Система управления базами данных – субд
- •Процесс прохождения пользовательского запроса
- •Введение в разработку баз данных
- •Метаданные
- •Индексы
- •Метаданные приложений
- •Подсистема средств проектирования
- •Подсистема обработки
- •Ядро субд
- •Создание базы данных
- •Процесс разработки базы данных
- •Моделирование данных
- •Функции субд
- •Модели данных
- •Объектные или инфологические модели данных
- •Модели данных на основе записей или даталогические
- •Реляционная модель данных
- •Преподаватели
- •Сетевая модель данных
- •. Физические модели данных
- •Концептуальное моделирование
- •Реляционная модель
- •Структура реляционных данных
- •Кортежи
- •Внешний ключ
- •Альтернативная терминология
- •Математические отношения
- •Отношения в базе данных
- •Реляционные ключи
- •Реляционная целостность
- •Целостность сущностей
- •Ссылочная целостность
- •Реляционные языки
- •Реляционная алгебра
- •Учебный проект 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
- •Литература по курсу «базы и банки данных»
Задачи к текущему материалу
ДАТЬ НА САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ!
1. Представьте каждую ФЗ, показанную на рис. 34, в математической форме так, как это сделано ранее. Затем шаг за шагом редуцируйте диаграмму посредством удаления всех транзитивных зависимостей.
Рис. 34. Диаграмма ФЗ для задачи 1
2. На рис. 35 идентифицируйте все ФЗ, избыточность которых является следствием добавления.
Рис. 35. Диаграмма ФЗ для задачи 2
3. Может ли диаграмма, представленная справа на рис. 36, быть получена из диаграммы, представленной в левой части того же рисунка, с помощью правил вывода, обсуждавшихся в настоящей главе?
Рис. 36. Диаграмма ФЗ для задачи 3
4. Предположим, что в результате проектирования были получены следующие четыре НФБК-отношения:
R1 (Слж-фам, Слж-адрес, Возраст, Пол, Начальник-фам)
R2 (Начальник-фам, Отдел)
R3 (Слж-фам, Отдел)
R4 (Отдел, Отдел-Тел-номер, Отдел-адрес)
Одно из этих отношений является избыточным. Укажите это отношение и поясните причину.
Решение задачи 4: R3 – избыточное, т.к. отношение, полученное при соединении R1 и R2 по атрибуту Начальник-фам, будет содержать все атрибуты R3. Если соединить R1 и R3 по Слж-фам, то избыточным будет R2.
Пример аномалий для 2нф
Из БД КОНСУЛЬТАНТ на первом шаге нормализации были получены две БД, функциональные зависимости которых показаны ниже.
Таблица R1 находится в НФБК и сейчас нас не интересует. Мы будем рассматривать только таблицу R2. Таблица R2 находится в 2НФ (как было доказано ранее), ибо здесь осталась транзитивная зависимость СНОМ КНОМ ТНОМ.
R2(СНОМ, СФАМ, КНОМ, ТНОМ) ..
СНОМ |
СФАМ |
КНОМ |
ТНОМ |
3215 |
Джонс |
120DH |
2136 |
3462 |
Смит |
238VH |
2344 |
3567 |
Хаус |
120DH |
2136 |
4756 |
Алекс |
345 DH |
3321 |
Аномалия удаления: Если удалить вторую строку, то пропадет не только информация, что студент 3462 имеет фамилию Смит и живет в комнате 238VH, но и номер телефона этой комнаты.
Аномалия вставки: Нельзя записать, что в комнате 152DH телефон 2556, пока туда не вселится студент.
Нормальная форма Бойса—Кодда (нфбк) с примером аномалий для 3 формы
К сожалению, даже отношения в третьей нормальной форме могут иметь аномалии. Рассмотрим отношение НАУЧНЫЙ_РУКОВОДИТЕЛЬ (рис. 4.6, а). Пусть требования к этому отношению таковы.
Студент может иметь одну или несколько специализаций.
Научными руководителями по одной и той же специализации могут быть несколько преподавателей.
Каждый преподаватель может осуществлять научное руководство только по одной специализации.
Будем также предполагать, что у преподавателей не бывает одинаковых фамилий.
Поскольку студенты могут специализироваться в нескольких областях, атрибут НомерСтудента не определяет атрибут Специализация. Более того, так как студент может иметь несколько научных руководителей, НомерСтудента не определяет и атрибут ИмяПреподавателя. Таким образом, сам по себе атрибут НомерСтудента не может играть роль ключа.
Рис. 4.6. Нормальная форма Бойса—Кодда: а — отношение, находящееся в ЗНФ, но не в НФБК; б — два отношения, находящиеся в НФБК
Комбинация (НомерСтудента, Специализация) определяет атрибут ИмяПреподавателя, а комбинация (НомерСтудента, ИмяПреподавателя) определяет атрибут Специализация. Следовательно, любая из этих комбинаций может быть ключом. Два или более атрибута или группы атрибутов, которые могут быть ключом, называются ключами-кандидатами (candidate keys). Тот из ключей-кандидатов, который выбирается в качестве ключа, называется первичным ключом (primary key).
Кроме ключей-кандидатов, есть еще одна функциональная зависимость, которую следует рассмотреть: атрибут ИмяПреподавателя определяет атрибут Специализация (любой из преподавателей является научным руководителем только по одной специализации; следовательно, зная имя преподавателя, мы можем определить эту специализацию). Таким образом, ИмяПреподавателя является детерминантом.
По определению, отношение НАУЧНЫЙ_РУКОВОДИТЕЛЬ находится в первой нормальной форме. Оно также находится во второй нормальной форме, поскольку не имеет неключевых атрибутов (каждый из атрибутов является частью по крайней мере одного ключа). Наконец, это отношение находится в третьей нормальной форме, так как не имеет транзитивных зависимостей. Тем не менее, несмотря на все это, отношение имеет аномалии модификации.
Пусть студент номер 300 отчисляется из университета. Если мы удалим строку с информацией об этом студенте, мы потеряем тот факт, что научным руководителем на кафедре психологии является некий Перлс. Это аномалия удаления. Далее, как мы можем записать в базу тот факт, что преподаватель Кейнс является научным руководителем на кафедре экономики? Никак, пока не появится хотя бы один студент, специализирующийся на экономике. Это аномалия вставки.
Ситуации, подобные только что описанной, приводят нас к определению нормальной формы Бойса—Кодда (Воусе—Codd normal form, BK/NF): отношение находится в НФБК, если каждый детерминант является ключом-кандидатом. Отношение НАУЧНЫЙ_РУК0В0ДИТЕЛЬ не находится в НФБК, поскольку детерминант ИмяПреподавателя не является ключом-кандидатом.
Как и в других примерах, отношение НАУЧНЫЙ_РУК0В0ДИТЕЛЬ можно разбить на два отношения, не имеющие аномалий. Например, отношения СТУДЕНТ—РУКОВОДИТЕЛЬ (НомерСтудента, ИмяПреподавателя) и РУКОВОДИТЕЛЬ—СПЕЦИАЛИЗАЦИЯ (Имя-Преподавателя, Специализация) не имеют аномалий.
Отношения в НФБК не имеют аномалий, относящихся к функциональным зависимостям, и некогда казалось, что вопрос с аномалиями модификации на этом исчерпан. Однако вскоре обнаружилось, что аномалии могут быть обусловлены и иными причинами, нежели функциональные зависимости.
