- •Оглавление
- •Глава 1 Представление данных 6
- •Глава 2 Реляционные базы данных 10
- •Глава 3 Язык структурированных запросов 42
- •Глава 4 Задание к выполнению лабораторных работ 72
- •Глава 5 Курсовая работа 97 Введение
- •Основные понятия
- •Представление данных
- •Уровни представления данных
- •Инфологическая модель «сущность-связь»
- •Характеристика связей
- •Вопросы для самопроверки
- •Реляционные базы данных
- •Основные понятия
- •Объекты реляционной структуры
- •Операции реляционной алгебры
- •Неопределенные значения
- •Ограничения целостности
- •Разработка реляционной базы данных
- •Основные предпосылки
- •Нормализация
- •Нормальные формы
- •Правила нормализации
- •Алгоритм нормализации
- •Нормализация в примерах.
- •Заключение
- •Вопросы для самопроверки
- •Язык структурированных запросов
- •Основные понятия
- •Типы данных
- •Операции над данными и null
- •Выбор данных из базы
- •Выбор данных из базы – оператор join
- •Выбор данных из базы – источник данных запрос
- •Управление структурой базы данных
- •Типы команд управления структурой
- •Типы объектов структуры
- •Создание таблицы
- •Удаление таблицы
- •Создание представления
- •Удаление представления
- •Изменение представления
- •Создание триггера
- •Изменение данных
- •Удаление данных
- •Ограничения целостности при манипулировании данными
- •Пример создания базы данных
- •Заключение
- •Вопросы для самопроверки
- •Задание к выполнению лабораторных работ
- •Лабораторная работа №1. Изучение команды select – простые запросы
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №2. Изучение команды select – запрос из нескольких источников
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Видео прокат
- •Вариант 2 Биржа
- •Вариант 3 Биржа труда
- •Вариант 4 Коктейли
- •Вариант 5 Урожай
- •Вариант 6 Фитнес центр
- •Вариант 7 Овощная база
- •Вариант 8 Оборудование
- •Вариант 9 Курортная карта
- •Вариант 10 осаго
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №3. Разработка структуры базы данных. Вторая часть
- •Задания для самостоятельного решения
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №3. Разработка системы протоколирования операций над данными реляционной таблицы с использованием триггеров
- •Задание для самостоятельного решения:
- •Контрольные вопросы:
- •Содержание отчета
- •Лабораторная работа №2. Разработка пользовательских функций и процедур
- •Задания для самостоятельного решения
- •Контрольные вопросы:
- •Содержание отчета
- •Лабораторная работа №2. Импорт данных
- •Задания для самостоятельного решения
- •Контрольные вопросы:
- •Содержание отчета
- •Курсовая работа
- •Библиографический список
Нормальные формы
Оценка качества проекта реляционной базы данных осуществляется путем проверки принадлежности таблиц проекта нормальным формам, а процесс нормализации переводит таблицу из одной нормальной формы в другую, обладающую лучшими свойствами.
Определено шесть нормальных форм: 1-5 нормальные формы (1НФ, 2НФ,… 5НФ) и нормальная форма Бойса-Кодда (НФБК).
НФБК является уточнением 3НФ и вводит более строгие требования к таблицам, чем 3НФ, не отменяя ее.
На практике для получения хорошего проекта обычно достаточно привести таблицы к 3НФ или к НФБК.
Первая нормальная форма – 1НФ: любое отношение с учетом ограничений целостности находится в 1НФ, таблица эквивалентная отношению с учетом ограничений целостности – реляционная таблица, также находится в 1НФ.
Вторая нормальная форма – 2НФ.
Определение 1 [4, 12]: отношение (таблица) находится во 2НФ тогда и только тогда, когда она находится в 1НФ, и каждый ее неключевой атрибут (столбец) минимально (полностью) зависит от каждого ключа.
Определение 2 [10]: отношение (таблица) находится во 2НФ тогда и только тогда, когда она находится в 1НФ, и нет неключевых атрибутов (столбцов), зависящих от части составного ключа.
Оба определения 2НФ по сути своей идентичны. Первое опирается на определение полной или минимальной функциональной зависимости, а второе включает это определение в себя.
Третья нормальная форма – 3НФ.
Определение 1 [4, 12]: отношение (таблица) находится в 3НФ тогда и только тогда, когда она находится во 2НФ, и каждый ее неключевой атрибут (столбец) нетранзитивно функционально зависит от каждого ключа.
Определение 2 [10]: отношение (таблица) находится в 3НФ тогда и только тогда, когда она находится в 2НФ, и все неключевые атрибуты (столбцы) взаимно независимы.
Оба определения 3НФ по сути своей идентичны. Первое опирается на определение транзитивной функциональной зависимости, а второе включает это определение в себя.
Нормальная форма Бойса-Кодда – НФБК.
Отношение (таблица) находится в НФБК в том и только в том случае, если любая функциональная зависимость между его полями (столбцами) сводится к минимальной (полной) функциональной зависимости от возможного ключа.
Все определения приведены в общем виде, где рассматриваются зависимости от всех возможных ключей таблицы. Практические примеры и определения нормальных форм обычно даются для частного случая – наличия единственного ключа, он же первичный ключ таблицы. Например: отношение (таблица) находится во 2НФ тогда и только тогда, когда она находится в 1НФ, и каждый ее неключевой атрибут (столбец) минимально (полностью) зависит от первичного ключа.
Формализация алгоритма нормализации при рассмотрении определений нормальных форм с учетом возможных ключей достаточно затруднена. Если использовать в определениях зависимости только от первичного ключа, можно сформулировать алгоритм приведения универсального отношения к 3НФ или НФБК [2, 10].
Правила нормализации
В основе алгоритма нормализации лежат два правила.
Правило №1 приведения таблицы, находящейся в 1НФ и не удовлетворяющей условиям 2НФ, к 2НФ.
Пусть задана таблица T, находящаяся в 1НФ со столбцами K1, K2, F пара столбцов K1 и K2 являются составным первичным ключом. В таблице имеется функциональная зависимость K2→F. Наличие K2→F говорит о том, что таблица T не находится в 2НФ. Рекомендуется создать новую таблицу T1, состоящую из атрибутов K2 и F и первичным ключом K2. Из исходной таблицы необходимо удалить поле F. В результате обе таблицы будут находиться в 2НФ.
В краткой форме:
Пусть T(K1,K2,F), где первичный ключ – (K1, K2) и K2→F.
Необходимо сделать:
T1(K2,F), где первичный ключ – K2 и K2→F,
T(K1,K2), где первичный ключ – (K1, K2).
Любой из столбцов и/или все K1, K2, F могут являться наборами столбцов.
Некоторые частные случаи правила.
Если таблица содержит столбец, полностью функционально зависящий от первичного ключа, то столбец остается в исходной таблице:
Пусть T(K1,K2,F1,F2), где первичный ключ – (K1, K2) и K2→F2, (K1,K2) →F1.
Необходимо сделать:
T1(K2,F2), где первичный ключ – K2 и K2→F2,
T(K1,K2, F1), где первичный ключ – (K1, K2) и (K1,K2) →F1.
Если таблица содержит столбец, функционально зависящий от той же части первичного ключа, то оба столбца перемещаются в новую таблицу:
Пусть T(K1,K2,F1,F2), где первичный ключ – (K1, K2) и K2→ (F1, F2).
Необходимо сделать:
T1(K2, F1,F2), где первичный ключ – K2 и K2→ (F1,F2),
T(K1,K2), где первичный ключ – (K1, K2) .
Если таблица содержит столбец, функционально зависящий от другой части первичного ключа, то правило применяется последовательно для каждой зависимости:
Пусть T(K1,K2,F1,F2), где первичный ключ – (K1, K2) и K1→ F1, K2→ F2.
Необходимо сделать:
T1(K1, F1), где первичный ключ – K1 и K1→ F1,
T2(K2, F2), где первичный ключ – K2 и K2→ F2,
T(K1,K2), где первичный ключ – (K1, K2).
Правило №2 приведения таблицы, находящейся в 2НФ и не удовлетворяющей условиям 3НФ, к 3НФ.
Пусть задана таблица T, находящаяся в 2НФ со столбцами K, F1,F2, где K – первичный ключ. В таблице имеется следующая функциональная зависимость F1→F2 и F1 не является возможным ключом. Наличие F1→F2 говорит о том, что таблица T не находится в 3НФ (K→F2 транзитивно). Рекомендуется создать новую таблицу T1, состоящую из атрибутов F1 и F2 и первичным ключом F1. Из исходной таблицы необходимо удалить поле F2. В результате обе таблицы будут находиться в 3НФ.
В краткой форме:
Пусть T(K,F1,F2), где первичный ключ – K и F1→F2.
Необходимо сделать:
T1(F1,F2), где первичный ключ – F1 и F1→F2,
T(K,F1), где первичный ключ – K.
Любой из столбцов и/или все K, F1,F2 могут являться наборами столбцов.
Некоторые частные случаи правила.
Если таблица содержит столбец, полностью функционально зависящий от первичного ключа, то столбец остается в исходной таблице:
Пусть T(K,F1,F2,F3), где первичный ключ – K и F1→F2, K→F3.
Необходимо сделать:
T1(F1,F2), где первичный ключ – F 1 и F 1→F2,
T(K1,K2, F1,F3), где первичный ключ – (K1, K2) и (K1,K2) →F1.
Если таблица содержит столбец, функционально зависящий от того же неключевого поля, оба столбца перемещаются в новую таблицу:
Пусть T(K,F1,F2,F3), где первичный ключ – K и F1→ (F2, F3).
Необходимо сделать:
T1(F1, F2,F3), где первичный ключ – F1 и F1→ (F2, F3),
T(K, F1), где первичный ключ – K.
Если таблица содержит столбец, функционально зависящий от другого неключевого поля, то применяется последовательно для каждой зависимости:
Пусть T(K,F1,F2,F3,F4), где первичный ключ – K и F1→ F2, F3→ F4.
Необходимо сделать:
T1(F1, F2), где первичный ключ – F1 и F1→ F2,
T2(F3, F4), где первичный ключ – F3 и F3→ F4,
T(K, F1,F3), где первичный ключ – K.
Если таблица содержит столбец, который функционально зависит от зависимого столбца первоначальной зависимости, то правило применяется каскадно:
Пусть T(K,F1,F2,F3), где первичный ключ – K и F1→F2, F2→F3.
Необходимо сделать:
Первый шаг.
T1(F1, F2,F3), где первичный ключ – F1 и F1→F2, F2→F3,
T(K, F1), где первичный ключ – K.
Второй шаг.
T2(F2,F3), где первичный ключ – F2 и F2→F3,
T1(F1, F2), где первичный ключ – F1 и F1→F2,
T(K, F1), где первичный ключ – K.
