Вы находитесь на странице: 1из 48

Тема: Нормальные формы

Высшая школа экономики, Москва, 2020


www.hse.ru
Нормализация – это процесс улучшения отношений.
Есть ряд критериев, которыми нужно для этого
руководствоваться.
Нормализация связана с нормальными формами. Мы
будем говорить, что каждой нормальной форме, в
которых может находиться наше отношение,
свойственен определенный набор ограничений, и
отношение находится в этой некоторой нормальной
форме, если оно всем этим ограничениям удовлетворяет.

Высшая школа экономики, Москва, 2020


• Устранение избыточности и аномалий.

• Повышение производительности БД.

• Удобство работы с БД при помощи SQL-запросов.

Высшая школа экономики, Москва, 2020


Отношение находится в первой нормальной форме, если:
- Значения его атрибутов не являются множествами или
кортежами,
- В столбце хранятся данные одного типа,
- Нет одинаковых строк.

Высшая школа экономики, Москва, 2020


Фирма Город, Улица, Дом Товар
Звезда Москва, ул. Ноутбук
Космонавтов, д. 20
Альфа Новосибирск, ул. Стол
Главная, д. 2

Студент Телефоны
Иванов П.Л. 89546662345,
98645243572
Смирнов П.Р. Моб. 86534526612

Высшая школа экономики, Москва, 2020


Зависимость – когда, зная одни атрибуты, мы можем
определить другие.

Какие в этой таблице зависимости?


Название фирмы определяет адрес и телефон, а название
фирмы вместе с товаром определяет его цену.

Высшая школа экономики, Москва, 2020


X функционально определяет Y или Y функционально зависит
от X, если любому значению X соответствует в точности одно
значение Y.
Ключ – минимальный набор атрибутов, который
функционально определяет все остальные атрибуты.
Первичный атрибут входит в состав любого возможного ключа.

Каким будет ключ для отношения «Товары и фирмы»?


Для отношения «Товары и фирмы» ключом будет комбинация из
двух атрибутов - «Название фирмы» и «Товар». Это
единственная комбинация атрибутов, которая позволяет
однозначно определить все остальные.
Высшая школа экономики, Москва, 2020
ГРАФИК_ПОЛЕТОВ (Пилот, Рейс, Дата_вылета, Время_вылета)
• каждому рейсу соответствует определенное
время вылета;
• для каждого пилота, даты и времени вылета
возможен только один рейс;
• на определенный день и рейс назначается
определенный пилот.

Какие будут функциональные зависимости?


• "Рейс" -> "Время_вылета";
• {"Пилот", "Дата_вылета", "Время_вылета"} -> "Рейс";
• {"Рейс", "Дата_вылета"} -> "Пилот".

Высшая школа экономики, Москва, 2020


• Рефлексивность: если B является подмножеством A, то A->B

• Приращение: если A->B, то AC -> BC

• Транзитивность: если A->B и B->С, то A->С

Высшая школа экономики, Москва, 2020


• Объединение ФЗ: если X->Y и X->Z, то X->YZ

• Псевдо транзитивность: если X->Y и WY->Z, то WX->Z

• Декомпозиция: если X->YZ, то X->Y и X->Z

Высшая школа экономики, Москва, 2020


1. Пусть отношение R(A,B,C) содержит четыре записи:
A B C
1 2 2
1 3 2
1 4 2
2 5 2

Для каждой функциональной зависимости (ФЗ) проверьте,


удовлетворяется ли она этим отношениям.
(a) A → B (e) C → A
(b) A → C (f) C → B
(c) B → A (g) AB → C
(d) B → C (h) AC → B
(i) BC → A

Высшая школа экономики, Москва, 2020


Какие из правил для функциональных
зависимостей верны для всех возможных
отношений, а какие - нет?

(a) Если A → B и BC → D, то AC → D
(b) Если AB → C, то A → C
(с) Если A → C и B → C и ABC → D, то A → D

Высшая школа экономики, Москва, 2020


Отношение R(A,B,C,D,E) удовлетворяет следующим ФЗ:
A→B
CD → E
E→A
B→D

Перечислите все минимальные ключи R.

Высшая школа экономики, Москва, 2020


Отношение R(A,B,C,D,E,F,G,H) удовлетворяет следующим ФЗ:
A → BCD
AD → E
EFG → H
F → GH

Найдите минимальный ключ для R.

Высшая школа экономики, Москва, 2020


Y полностью функционально зависит от X, если Y функционально зависит
от всех атрибутов, входящих в состав X, а не от какой-то его части.

Есть ли в отношении неполная функциональная зависимость от


ключа?
- Название фирмы, Товар –> Цена (полная функциональная зависимость)
- Название фирмы, Товар –> Адрес, Телефон (неполная функциональная
зависимость)

Адрес с телефоном зависят только от фирмы, и не зависят от товара.


Проблема – неключевые атрибуты «Адрес» и «Телефон» не полностью
зависят от ключа.
Высшая школа экономики, Москва, 2020
Отношение находится во 2НФ, если оно находится в 1НФ и
все непервичные (неключевые) атрибуты полностью зависят от
любого возможного ключа (но не от подмножества ключей).
Если есть хотя бы один столбец, который определяется не
полным составным ключом, а лишь его фрагментом, то 2 НФ
нарушена.
Ключ надо выбирать так, чтобы ни один столбец нельзя
было идентифицировать в таблице не зная полного ключа.
Чтобы привести в 2НФ нужно либо выбрать другой ключ, либо
разбить таблицу на несколько таблиц. Ключ должен быть
абсолютно незаменим.

Высшая школа экономики, Москва, 2020


Курс Студент Тип обучения Оценка Ак. часов
10774 Иванов П.Р. очно-заочное отлично 40
10775 Соколов Р.О. вебинар хорошо 40
10776 Сергеева А.О. очное отлично 40
10777 Петрова Р.Л. очное хорошо 40

Находится ли таблица во 2НФ?


Нет. Есть столбец, который определяется не полным составным
ключом, а лишь его фрагментом. Это продолжительность курса. От
того какой студент посещает курс эта ситуация не изменится. Мы
можем назвать длительность обучения не зная имени студента. То
есть полный ключ для определения числа часов по курсу нам не
нужен, достаточно его части.

Высшая школа экономики, Москва, 2020


Функциональная зависимость A -> С называется транзитивной,
если существует такой атрибут B, что имеются функциональные
зависимости A -> B и B -> С.

Есть ли в отношении «Студенты и предметы» транзитивные


зависимости?
Да. Номер зачётки определяет Номер группы, Номер группы и Предмет
определяют Преподавателя.
Высшая школа экономики, Москва, 2020
Отношение находится в 3НФ когда выполняются
следующие условия:
- отношение находится во 2НФ,
- ни один непервичный атрибут не находится в
транзитивной функциональной зависимости от любого
возможного ключа.

Отношение находится в третьей нормальной форме, если


оно находится во второй нормальной форме и все
неключевые атрибуты взаимно независимы.

Высшая школа экономики, Москва, 2020


Находится ли отношение в 3НФ?
Да. Все атрибуты первичные.

Высшая школа экономики, Москва, 2020


Универмаг и Товар определяют Номер отдела, в котором должен
продаваться этот товар. Универмаг и Номер отдела определяют
Заведующего. Ключом в этом отношении будет являться
комбинация атрибутов Универмаг и Товар. Эта комбинация дает нам
возможность определить все остальные атрибуты.

Находится ли отношение в 3НФ?


Нет. Заведующий транзитивно зависит от ключа, потому что он
не напрямую зависит от универмага и товара, а зависит как бы
через номер отдела. В таком случае мы видим, что у нас третья
нормальная форма нарушена.

Высшая школа экономики, Москва, 2020


№ заказа Покупатель Товар Цена (шт.) Кол-во Сумма
10774 Иванов П.Р. телефон 100 2 200
10775 Соколов Р.О. ноутбук 2000 1 2000
10776 Сергеева А.О. планшет 50 1 50
10777 Петрова Р.Л. планшет 50 2 100

Находится ли это отношение в 3НФ?


Нет. В этой таблице ключ – «Номер заказа». Зная его мы можем
определить остальные столбцы. Столбец «Сумма» - его значение
можно узнать зная цену и количество, ключ не нужен для этого.
Неключевые столбцы не должны пытаться играть роль ключа в
таблице. Неключевые столбцы призваны просто дать информацию, но
не определить другие столбцы. Если это правило нарушается, значит
неключевые столбцы выбраны неправильно. И опять мы видим
избыточность, которая постоянно сопровождает нормализацию.
Столбец «Сумма» явно лишний.
Высшая школа экономики, Москва, 2020
• Все неключевые столбцы определяются ключом.

• Только полным ключом!

• Ничем кроме ключа!

Высшая школа экономики, Москва, 2020


Все атрибуты должны функционально зависеть только от
ключа…

…или детерминанты всех функциональных зависимостей


являются потенциальными ключами…

…или от ключей зависят все атрибуты, в том числе


первичные.

Высшая школа экономики, Москва, 2020


Находится ли отношение в НФБК?
Город и Адрес определяют Индекс, а Индекс определяет Город.
Есть две возможности для выбора ключа: либо это Город и Адрес, либо
это Индекс и Адрес.

Зависимость, когда из Индекса следует Город, нарушает нормальную


форму Бойса-Кодда, потому что зависимость в схеме присутствует, а поле
Индекс ключа не содержит.

Высшая школа экономики, Москва, 2020


Какие могут быть потенциальные ключи?
{Номер корта, Время начала}, {Номер корта, Время окончания},
{Тариф, Время начала}, {Тариф, Время окончания}.
В каких НФ находится отношение?
2НФ: Да, все атрибуты входят в какой-то из потенциальных ключей, а неключевых атрибутов в
отношении нет.
3НФ: Да, нет транзитивных зависимостей, что соответствует требованиям.
НФБК: Нет, есть функциональная зависимость Тариф → Номер корта, в которой левая часть
(детерминант) не является потенциальным ключом отношения.
Недостатком данной структуры является то, что, например, по ошибке можно приписать тариф
«Корт 1 для членов клуба» к бронированию второго корта, хотя он может относиться только к
первому корту.
Высшая школа экономики, Москва, 2020
Можно улучшить структуру с помощью декомпозиции отношения на два, получив
отношения, удовлетворяющие НФБК (подчёркнуты атрибуты, входящие в
первичный ключ). Для большей наглядности к информации о тарифах добавлен
атрибут «Для членов клуба».

Высшая школа экономики, Москва, 2020


Отношение R(A,B,C,D,E) находится в НФБК. Допустим,
что единственный ключ R - ABC.

Какая из следующих ФЗ обязательно удовлетворяются R?


BCD -> E
ABE -> D
ACE -> D
ABC -> E

Высшая школа экономики, Москва, 2020


Эта таблица в 3НФ, она целиком состоит из ключа (все три
колонки формируют ключ).

Высшая школа экономики, Москва, 2020


Аномалия изменения – не можем изменить одно, не затронув или
повредив другое. NULL часто свидетельствует о недостаточной
нормализации. Это аномалия добавления – мы не можем
добавить один факт, не добавив другие (которые мы можем пока
не знать). Аномалия удаления – не можем удалить один факт, не
удалив другой.

Высшая школа экономики, Москва, 2020


И преподаватель, и аудитория связаны с курсом многозначно. Потому что один
курс могут читать несколько преподавателей и один курс может проводиться во многих
аудиториях. Изменяя одну многозначную зависимость в таблице мы затрагиваем и
другую. Несколько многозначных зависимостей в одной таблице – проблема.
Например, если аудитория 3 закрывается на ремонт, то строку удаляем, а вместе с ней
удалиться и связь курса с преподавателем. Или преподаватель 2 перестал читать этот
курс, это не значит, что аудитория 3 стала негодной для проведения курса 2.
Получается, что каждая стока таблицы слишком много на себя берёт.

Высшая школа экономики, Москва, 2020


Нарушение 4НФ – в одной таблице несколько многозначных
зависимостей. Из-за этого невозможно редактировать колонки
независимо друг от друга. Надо таблицу разбить на две так, чтобы
каждая многозначная зависимость оказалась в отдельной таблице. Все
многозначные зависимости выносим в отдельные таблицы, а потом
делаем join по ключу «номер курса» и получаем общую картину для
анализа учебных возможностей. Теперь проще писать запросы и
меньше аномалий. Мы теперь не рискуем удалив одну зависимость
потерять остальные.

Высшая школа экономики, Москва, 2020


Так как лекторы, читающие предмет, и книги,
рекомендованные по предмету, друг от друга не зависят,
то данное отношение содержит многозначную
зависимость. Такое отношение обладает целым рядом
аномалий. Одна из них состоит в том, что если мы хотим
порекомендовать новую книгу по курсу МатАн, нам
придется добавить столько новых записей, сколько
лекторов ведут МатАн и наоборот.
Формально, здесь две МЗЗ: {Дисциплина} ↠ {Книга} и
{Дисциплина} ↠ {Лектор}.
Во-первых, это избыточно. А во-вторых, для такого
отношения необходимо разрабатывать дополнительный
механизм контроля целостности. Оптимальным
решением проблемы будет декомпозиция отношения на
два с заголовками {Дисциплина, Книга} и {Дисциплина,
Лектор}. Такая декомпозиция будет находиться в 4НФ.

Высшая школа экономики, Москва, 2020


Декомпозиция — это разбиение на множества, может
быть, пересекающиеся, такие, что их объединение даёт нам исходное
отношение. Восстановить исходное отношение можно с помощью
операции естественного соединения.

Шаги декомпозиции
• Находим множество функциональных зависимостей, выделяем
зависимость, которая нарушает нормальную форму, к которой мы хотим
привести. Например X ->Y.

• Ищем другие зависимости с той же самой левой частью, то есть мы


ищем другие наборы атрибутов, которые функционально зависят от X,
например X -> Z.

• Выделяем в отдельное отношение наши атрибуты X, Y, Z и все другие


атрибуты, зависящие от X, а из исходного отношения мы удаляем
зависимые атрибуты (Y, Z и другие).

Высшая школа экономики, Москва, 2020


R (ABCDE)
F = {ABD->C, BC->D, CD->E}

Какие возможные ключи в этом отношении?


Находится ли отношение во 2НФ?

Только слева И слева, и справа Только справа


AB CD E

Возможные ключи: ABC и ABD


Значит первичные атрибуты – это ABCD, а не первичный –
E, но при этом CD -> E, а CD – это лишь часть возможного
ключа.

Высшая школа экономики, Москва, 2020


R (ABC)
F = {A->B, B->C}

Какие возможные ключи в этом отношении?


Находится ли отношение во 3НФ?

Возможные ключи: A
Значит первичные атрибут – это A, а не первичные – B и
C, но, при этом, один непервичный атрибут определяет
другой.

Если все атрибуты отношения первичные отношение


находится в 3НФ.
Высшая школа экономики, Москва, 2020
R (ABC)
F = {AB->C, C->A}

Какие возможные ключи в этом отношении?


Находится ли отношение во 3НФ?

Возможные ключи: AB и BC
Значит все атрибуты первичные. Согласно НФБК они
должны все зависеть от потенциальных ключей. Но А
зависит от части ключа.

Высшая школа экономики, Москва, 2020


Нормализация нужна для того, чтобы устранить
a. Трудности с извлечением некоторых данных
b. Избыточность
c. Неоднозначность данных
d. Аномалии изменения
e. Аномалии удаления
f. Зависимости между атрибутами
g. Аномалии добавления

Высшая школа экономики, Москва, 2020


Укажите наименьшую нормальную форму,
нарушенную в отношении "Кино(Название фильма,
Режиссер, Актеры)"
a. 1НФ
b. 2НФ
c. 3НФ
d. НФ Бойса-Кодда

Высшая школа экономики, Москва, 2020


Укажите наименьшую нормальную форму,
нарушенную в отношении "Аэропорт(Рейс, Дата-
время-отправления, Тип-самолета, Общее-
количество-мест-в-самолете, Количество-проданных-
билетов)"
a. 1НФ
b. 2НФ
c. 3НФ
d. НФ Бойса-Кодда

Высшая школа экономики, Москва, 2020


Укажите наименьшую нормальную форму,
нарушенную в отношении "Университет(Название,
Юридический адрес, Ректор, Факультет, Декан)"
a. 1НФ
b. 2НФ
c. 3НФ
d. НФ Бойса-Кодда

Высшая школа экономики, Москва, 2020


Атомарность
1НФ

Высшая школа экономики, Москва, 2020


2НФ
Все неключевые
атрибуты определяются
ключом

Высшая школа экономики, Москва, 2020


Все неключевые
3НФ атрибуты определяются
только ключом (не друг
другом).

Высшая школа экономики, Москва, 2020


4НФ
Не должно быть
многозначных
зависимостей

Высшая школа экономики, Москва, 2020


Высшая школа экономики, Москва, 2020
https://www.coursera.org/learn/data-bases-intr/home/welcome

https://www.youtube.com/watch?v=-7sCE6ob70U

https://www.youtube.com/channel/UC5ZAemhQUQuNqW3c9Jkw8
ug/videos

https://www.youtube.com/user/GaryBoetticher/videos

https://www.youtube.com/watch?v=UrYLYV7WSHM

http://www.rema44.ru/resurs/study/dblectio/dblect2005.pdf

Высшая школа экономики, Москва, 2020