- •Основы систем баз данных
 - •Содержание
 - •Введение
 - •В первом разделе рассматриваются базовые понятия реляционной модели данных. Дается общая характеристика реляционной модели данных
 - •Раздел 1. Базовые понятия реляционной модели данных. Общая характеристика реляционной модели данных
 - •1.1. Типы данных
 - •Простые типы данных
 - •Структурированные типы данных
 - •Ссылочные типы данных
 - •Типы данных, используемые в реляционной модели
 - •1.2. Домены
 - •1.3. Отношения, атрибуты, кортежи отношения Определения и примеры
 - •Свойства отношений
 - •Первая нормальная форма
 - •1.4. Контрольные вопросы
 - •Раздел 2. Реляционная алгебра. Обзор реляционной алгебры
 - •2.1. Замкнутость реляционной алгебры
 - •2.2. Отношения, совместимые по типу
 - •2.3. Оператор переименования атрибутов
 - •2.4. Теоретико-множественные операторы Объединение
 - •Пересечение
 - •Вычитание
 - •Декартово произведение
 - •Специальные реляционные операторы Выборка (ограничение, селекция)
 - •Проекция
 - •Соединение
 - •Общая операция соединения
 - •Тэта-соединение
 - •Экви-соединение
 - •Естественное соединение
 - •Деление
 - •2.5. Примеры использования реляционных операторов
 - •Невыразимость транзитивного замыкания реляционными операторами
 - •Кросс-таблицы
 - •2.6. Контрольные вопросы
 - •Рздел 3. Нормальные формы отношений. Этапы разработки базы данных
 - •3.1. Критерии оценки качества логической модели данных
 - •Адекватность базы данных предметной области
 - •Легкость разработки и сопровождения базы данных
 - •Скорость операций обновления данных (вставка, обновление, удаление)
 - •Скорость операций выборки данных
 - •Основной пример
 - •1Нф (Первая Нормальная Форма)
 - •Аномалии обновления
 - •Аномалии вставки (insert)
 - •Аномалии обновления (update)
 - •Аномалии удаления (delete)
 - •3.2. Функциональные зависимости
 - •Определение функциональной зависимости
 - •Функциональные зависимости отношений и математическое понятие функциональной зависимости
 - •3.3. 2Нф (Вторая Нормальная Форма)
 - •Анализ декомпозированных отношений
 - •Оставшиеся аномалии вставки (insert)
 - •Оставшиеся аномалии обновления (update)
 - •Оставшиеся аномалии удаления (delete)
 - •3.4. 3Нф (Третья Нормальная Форма)
 - •Алгоритм нормализации (приведение к 3нф)
 - •3.5. Анализ критериев для нормализованных и ненормализованных моделей данных Сравнение нормализованных и ненормализованных моделей
 - •3.6. Oltp и olap-системы
 - •3.7. Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза
 - •3.8. Контрольные вопросы
 - •Раздел 4. Нормальные формы более высоких порядков
 - •4.1. Нфбк (Нормальная Форма Бойса-Кодда)
 - •4.2. 4Нф (Четвертая Нормальная Форма)
 - •4.3. 5Нф (Пятая Нормальная Форма)
 - •4.4. Продолжение алгоритма нормализации (приведение к 5нф)
 - •4.5. Контрольные вопросы
 - •Раздел 5. Элементы модели "сущность-связь"
 - •5.1. Основные понятия er-диаграмм
 - •5.2. Пример разработки простой er-модели
 - •5.3. Концептуальные и физические er-модели
 - •5.4. Контрольные вопросы
 - •Раздел 6. Элементы языка sql
 - •6.1. Операторы sql
 - •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
 - •Операторы dml (Data Manipulation Language) - операторы манипулирования данными
 - •Операторы защиты и управления данными
 - •6.2. Примеры использования операторов манипулирования данными
 - •Insert - вставка строк в таблицу
 - •Примеры использования оператора select
 - •Отбор данных из одной таблицы
 - •Отбор данных из нескольких таблиц
 - •Использование имен корреляции (алиасов, псевдонимов)
 - •Использование агрегатных функций в запросах
 - •Использование агрегатных функций с группировками
 - •Использование подзапросов
 - •Использование объединения, пересечения и разности
 - •Синтаксис оператора выборки данных (select)
 - •Синтаксис оператора выборки
 - •Синтаксис соединенных таблиц
 - •Синтаксис условных выражений раздела where
 - •Порядок выполнения оператора select
 - •Стадия 1. Выполнение одиночного оператора select
 - •Стадия 2. Выполнение операций union, except, intersect
 - •Стадия 3. Упорядочение результата
 - •Как на самом деле выполняется оператор select
 - •Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
 - •6.3. Контрольные вопросы
 - •Заключение
 - •Библиографический список
 
3.3. 2Нф (Вторая Нормальная Форма)
Определение 3. Отношение R находится во второй нормальной форме (2НФ) тогда и только тогда, когда отношение находится в 1НФ и нет неключевых атрибутов, зависящих от части сложного ключа. (Неключевой атрибут - это атрибут, не входящий в состав никакого потенциального ключа).
Замечание. Если потенциальный ключ отношения является простым, то отношение автоматически находится в 2НФ.
Отношение СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ не находится в 2НФ, т.к. есть атрибуты, зависящие от части сложного ключа:
Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника является зависимостью от части сложного ключа:
Н_СОТР ФАМ
Н_СОТР Н_ОТД
Н_СОТР ТЕЛ
Зависимость наименования проекта от номера проекта является зависимостью от части сложного ключа:
Н_ПРО ПРОЕКТ
Для того, чтобы устранить зависимость атрибутов от части сложного ключа, нужно произвести декомпозицию отношения на несколько отношений. При этом те атрибуты, которые зависят от части сложного ключа, выносятся в отдельное отношение.
Отношение СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ декомпозируем на три отношения - СОТРУДНИКИ_ОТДЕЛЫ, ПРОЕКТЫ, ЗАДАНИЯ.
Отношение СОТРУДНИКИ_ОТДЕЛЫ (Н_СОТР, ФАМ, Н_ОТД, ТЕЛ)
Функциональные зависимости:
Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника:
Н_СОТР ФАМ
Н_СОТР Н_ОТД
Н_СОТР ТЕЛ
Зависимость номера телефона от номера отдела:
Н_ОТД ТЕЛ
Таблица 34
Отношение СОТРУДНИКИ_ОТДЕЛЫ
Н_СОТР  | 
			ФАМ  | 
			Н_ОТД  | 
			ТЕЛ  | 
		
1  | 
			Иванов  | 
			1  | 
			11-22-33  | 
		
2  | 
			Петров  | 
			1  | 
			11-22-33  | 
		
3  | 
			Сидоров  | 
			2  | 
			33-22-11  | 
		
Отношение ПРОЕКТЫ (Н_ПРО, ПРОЕКТ)
Функциональные зависимости:
Н_ПРО ПРОЕКТ
Таблица 35
Отношение ПРОЕКТЫ
Н_ПРО  | 
			ПРОЕКТ  | 
		
1  | 
			Космос  | 
		
2  | 
			Климат  | 
		
Отношение ЗАДАНИЯ (Н_СОТР, Н_ПРО, Н_ЗАДАН)
Функциональные зависимости:
{Н_СОТР, Н_ПРО} Н_ЗАДАН
Таблица 36
Отношения ЗАДАНИЯ
Н_СОТР  | 
			Н_ПРО  | 
			Н_ЗАДАН  | 
		
1  | 
			1  | 
			1  | 
		
1  | 
			2  | 
			1  | 
		
2  | 
			1  | 
			2  | 
		
3  | 
			1  | 
			3  | 
		
3  | 
			2  | 
			2  | 
		
Анализ декомпозированных отношений
Отношения, полученные в результате декомпозиции, находятся в 2НФ. Действительно, отношения СОТРУДНИКИ_ОТДЕЛЫ и ПРОЕКТЫ имеют простые ключи, следовательно автоматически находятся в 2НФ, отношение ЗАДАНИЯ имеет сложный ключ, но единственный неключевой атрибут Н_ЗАДАН функционально зависит от всего ключа {Н_СОТР, Н_ПРО}.
Часть аномалий обновления устранена. Так, данные о сотрудниках и проектах теперь хранятся в различных отношениях, поэтому при появлении сотрудников, не участвующих ни в одном проекте просто добавляются кортежи в отношение СОТРУДНИКИ_ОТДЕЛЫ. Точно также, при появлении проекта, над которым не работает ни один сотрудник, просто вставляется кортеж в отношение ПРОЕКТЫ.
Фамилии сотрудников и наименования проектов теперь хранятся без избыточности. Если сотрудник сменит фамилию или проект сменит наименование, то такое обновление будет произведено в одном месте.
Если по проекту временно прекращены работы, но требуется, чтобы сам проект сохранился, то для этого проекта удаляются соответствующие кортежи в отношении ЗАДАНИЯ, а данные о самом проекте и данные о сотрудниках, участвовавших в проекте, остаются в отношениях ПРОЕКТЫ и СОТРУДНИКИ_ОТДЕЛЫ.
Тем не менее, часть аномалий разрешить не удалось.
