Изменения

Перейти к: навигация, поиск

Нормальные формы: первая и вторая

73 байта добавлено, 19:17, 4 сентября 2022
м
rollbackEdits.php mass rollback
Первая и вторая нормальные формы разработаны Эдгаром Коддом и являются достаточно "«самоочевидными"». Самоочевидность заключается в том, что отношения в первой и второй нормальной формах обладают интуитивно понятными базовыми свойствами, которые логично требовать от отношений, используемых в рамках баз данных.
== Первая нормальная форма ==
| 4 || Сегаль А. С. || 666-66-66 ||
|}
В отношениях такого вида сложно обеспечивать консистентность данных. Рассмотрим пример выше. Первая возникающая проблема заключается в том, что при появлении преподавателя с более, чем двумя телефонами, придется изменять целиком структуру отношения. Вторая проблема -- – на выполнение запроса "«проверить, что никакие два преподавателя не имеют одинаковый телефон" » и других запросов, аналогичных данному, потребуется экспоненциальное от количества полей с данными о телефонах время.
==== Неатомарные атрибуты ====
Для того, чтобы привести произвольное отношение <tex>R</tex> в 1НФ, достаточно:
# рассмотреть Рассмотреть все наборы атрибутов, имеющих одинаковый смысл# для Для каждого фиксированного значения оставшихся атрибутов сделать по записи на каждое значение выбранных:## * рассмотрим повторяющиеся атрибуты <tex>A_1, \ldots, A_k</tex> ## * рассмотрим оставшиеся атрибуты <tex>B_1, \ldots, B_n</tex> ## * построим такое отношение <tex>T</tex> на атрибутах <tex>B_1, \ldots, B_n, A</tex>, что <tex>\{b_1, \ldots, b_n, a\} \in T \Longleftrightarrow \{b_1 \ldots, b_n\} \in \pi_{B_1, \ldots, B_n}R \land a \in \bigcup\limits_{i=1}^k \pi_{A_i}R</tex># аналогичную Аналогичную процедуру повторить для всех неатомарных атрибутов
Отношение, использованое в примерах выше, после приведения в 1НФ будет выглядеть как
* технической/алгоритмической сложность внесения или изменения данных
}}
Переход в 1НФ не уменьшает выразительную способность "&laquo;разрешенных" &raquo; отношений, но при этом исправляет только самые простые аномалии, поэтому в отношениях в 1НФ, не приведенных хотя бы в во 2НФ, могут возникать аномалии более сложного вида.
{{Определение
=== Запрещенные конструкции ===
В Во 2НФ запрещено, чтобы какие-либо атрибуты функционально зависели от части ключа. Рассмотрим следующий пример, уже приведенный в 1НФ:
{| class="wikitable"
! CourseId !! Year || Lecturer !! Exam
Отношения в 1НФ имеют аномалии вставки и удаления (нельзя хранить информацию про экзамен, не зная лектора) и изменения (можно изменить информацию про экзамен по предмету только для одного года). От этих аномалий можно избавиться, если убрать функциональные зависимости от части ключа.
=== Приведение в во 2НФ ===
Отношение в 1НФ приводится к 2НФ декомпозицией по "&laquo;мешающим" &raquo; функциональным зависимостям. На примере выше такая зависимость только одна &ndash; <tex>\mathrm{CourseId} \rightarrow \mathrm{Exam}</tex>.
{{Определение
|definition=
'''Декомпозиция''' отношения <tex>R</tex>, состоящего из наборов атрибутов <tex>A, B, C</tex>, по функциональной зависимости <tex>A \rightarrow B</tex> &ndash; пара отношений <tex>\pi_{A, B} R</tex> и <tex>\pi_{A, C} R</tex>.
}}
Декомпозиция рассмотренного примера по "&laquo;лишней" &raquo; функциональной зависимости дает следующий результат:
{| class="wikitable"
! CourseId !! Year || Lecturer
|}
В нем есть две базовые функциональные зависимости: <tex>\mathrm{CourseId}, \mathrm{Year} \rightarrow \mathrm{Lecturer}</tex> и <tex>\mathrm{Lecturer} \rightarrow \mathrm{Phone}</tex>. Несмотря на то, что данное отношение находится в во 2НФ, в нем все еще имеют место все три аномалии 1НФ &ndash; аномалии вставки, удаления и изменения (информация о телефонах и о преподавании никак не разделена). Для исправления аномалий 2НФ отношение переводят в [[Нормальные_формы:_третья_и_Бойса-Кодда|третью нормальную форму и выше]].
1632
правки

Навигация