- •Базы Данных
- •1.Понятие банка данных. Компоненты банков данных и их краткая характеристика
- •2.Языковые средства субд
- •3.Классификация баз данных
- •4.Этапы проектирования баз данных
- •Тсп для даталогического проектирования
- •Тсп для физического проектирования
- •5.Инфологическое (концептуальное) моделирование
- •7.Case -средства проектирования бд
- •9.Реляционные модели. Основные понятия
- •10.Реляционные модели. Нормальные формы отношений
- •5Nf. Декомпозиция без потерь
- •11.Реляционные модели. Нормализация отношений
- •12.Реляционные алгебры
- •13.Факторы, влияющие на проектирование баз данных
- •1. Специфика предметной области:
- •2. Особенности требуемой обработки информации:
- •3. Характеристика пользователей системы:
- •14.Алгоритм перехода от er-модели к реляционной модели данных
- •15.Ограничения целостности. Понятие и классификация
- •16.Возможности задания ограничений целостности в современных субд
- •17.Языки запросов. Понятие. Классификация
- •18.Классификация запросов. Особенности реализации запросов разных классов
- •19.Табличные языки запросов. Общая характеристика
- •20.Язык sql. Общая характеристика
- •21.Общая структура команды Select языка sql. Корректировка данных в sql
- •22.Sql. Создание объектов
- •23.Sql. Встроенный join
- •24.Sql. Понятие курсора. Использование курсоров
- •25.Sql. Группировка данных. Использование обобщающих функций
- •26.Sql. Создание и использование представлений
- •27.Генераторы экранных форм. Назначение. Классификация
- •28.Генераторы отчетов. Назначение. Классификация
- •29.Классификация распределенных банков данных
- •30.Проблемы обеспечения целостности в распределенных бд
- •31.Сравнение централизованных и распределенных систем
- •32.Распределенные бд. Технологии файл-сервер и клиент-сервер
- •33.Распределенные базы данных. Технология тиражирования
- •34.Проблемы, возникающие при параллельном доступе, и пути их решения
10.Реляционные модели. Нормальные формы отношений
Нормальная форма — свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, которая потенциально может привести к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение.
1NF
Отношение находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов. В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение.
Что же касается различных таблиц, то они могут не быть правильными представлениями отношений и, соответственно, могут не находиться в 1NF. Таблица нормализована (эквивалентно — находится в первой нормальной форме) тогда и только тогда, когда она является прямым и верным представлением некоторого отношения. Конкретнее, рассматриваемая таблица должна удовлетворять следующим пяти условиям:
Нет упорядочивания строк сверху-вниз.
Нет упорядочивания столбцов слева-направо.
Нет повторяющихся строк.
Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего).
Все столбцы являются обычными.
«Обычность» всех столбцов таблицы означает, что в таблице нет «скрытых» компонентов, которые могут быть доступны только в вызове некоторого специального оператора взамен ссылок на имена регулярных столбцов, или которые приводят к побочным эффектам для строк или таблиц при вызове стандартных операторов. Таким образом, например, строки не имеют идентификаторов кроме обычных значений потенциальных ключей (без скрытых «идентификаторов строк» или «идентификаторов объектов»). Они также не имеют скрытых временных меток.
2NF
Отношение находится во второй нормальной форме, если оно находится в первой нормальной форме, и при этом любой его атрибут, не входящий в состав потенциального ключа, функционально полно зависит от каждого потенциального ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего составного потенциального ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него частей. Или другими словами: в 2NF нет неключевых атрибутов, зависящих от части составного потенциального ключа.
Второе важное значение второй нормальной формы состоит в том, что она по определению запрещает наличие неключевых атрибутов, которые вообще не зависят от потенциального ключа. Таким образом, 2NF запрещает создавать отношения как несвязанные (хаотические, случайные) наборы атрибутов.
Пример приведения таблицы ко второй нормальной форме
Пусть Сотрудник и Должность вместе образуют первичный ключ в такой таблице:
Сотрудник |
Должность |
Зарплата |
Наличие компьютера |
Гришин |
Кладовщик |
20000 |
Нет |
Васильев |
Программист |
40000 |
Есть |
Васильев |
Кладовщик |
25000 |
Нет |
Зарплату сотруднику каждый начальник устанавливает сам, но её границы зависят от должности. Наличие же компьютера у сотрудника зависит только от должности, то есть зависимость от первичного ключа неполная.
В результате приведения к 2NF получаются две таблицы:
Сотрудник |
Должность |
Зарплата |
Гришин |
Кладовщик |
20000 |
Васильев |
Программист |
40000 |
Васильев |
Кладовщик |
25000 |
Здесь первичный ключ, как и в исходной таблице, составной, но единственный не входящий в него атрибут Зарплата зависит теперь от всего ключа, то есть полно.
Должность |
Наличие компьютера |
Кладовщик |
Нет |
Программист |
Есть |
3NF
Таблица находится в 3NF тогда и только тогда, когда выполняются следующие условия:
Отношение R (таблица) находится во второй нормальной форме;
Каждый непервичный атрибут находится в нетранзитивной (то есть прямой) зависимости от каждого ключа .
Непервичный (неключевой) атрибут R — это атрибут, который не принадлежит ни одному из возможных (альтернативных) ключей R. Транзитивная зависимость — это функциональная зависимость, при которой X → Z (X определяет Z) не напрямую, а посредством отношения X → Y и Y → Z (отношение Y → X не является обязательным условием).
Пример приведения таблицы к третьей нормальной форме
Исходная таблица:
Фамилия |
Отдел |
Телефон |
Гришин |
Бухгалтерия |
11-22-33 |
Васильев |
Бухгалтерия |
11-22-33 |
Петров |
Снабжение |
44-55-66 |
В результате приведения к 3НФ получаются две таблицы:
Отдел |
Наименование отдела |
Телефон |
1 |
Бухгалтерия |
11-22-33 |
2 |
Снабжение |
44-55-66 |
Фамилия |
Отдел |
Гришин |
1 |
Васильев |
1 |
Петров |
2 |
4NF
Отношение находится в 4NF, если оно находится в 3NF и не содержит нетривиальных многозначных зависимостей. То есть все многозначные зависимости являются, по сути, функциональными зависимостями от ключей отношения.
Пример
Предположим, что рестораны производят разные виды пиццы, а службы доставки ресторанов работают только в определенных районах города. Составной ключ таблицы такого отношения включает три поля: {Ресторан, Вид пиццы, Район доставки}.
Такая таблица не соответствует 4NF, так как существует многозначная зависимость:
{Ресторан} →→ {Вид пиццы}
{Ресторан} →→ {Район доставки}
То есть, например, при добавлении нового вида пиццы придется внести по одной новой записи для каждого района доставки. Возможна логическая аномалия, при которой определенному виду пиццы будут соответствовать лишь некоторые районы доставки из обслуживаемых рестораном районов.
Для предотвращения аномалии нужно разбить многозначную зависимость — разместить независимые факты в разных таблицах.