Изменения

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

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

5 байт убрано, 03:55, 22 декабря 2020
Нет описания правки
| 4 || Сегаль А. С. || 666-66-66 ||
|}
 
В отношениях такого вида сложно обеспечивать консистентность данных. Рассмотрим пример выше. Первая возникающая проблема заключается в том, что при появлении преподавателя с более, чем двумя телефонами, придется изменять целиком структуру отношения. Вторая проблема -- на выполнение запроса "проверить, что никакие два преподавателя не имеют одинаковый телефон" и других запросов, аналогичных данному, потребуется экспоненциальное от количества полей с данными о телефонах время.
| 4 || Сегаль А. С. || 666-66-66
|}
 
Потенциальным решением проблемы повторяющихся групп является группировка атрибутов по смыслу. На примере показано, как несколько телефонов из прошлого отношения были сгруппированы в единый атрибут, что позволяет не изменять структуру отношения в зависимости от максимального количества телефонов у одного человека. Однако проблема большого времени работы проверки корректности данных все еще остается.
Для того, чтобы привести произвольное отношение <tex>R</tex> в 1НФ, достаточно:
 
# рассмотреть все наборы атрибутов, имеющих одинаковый смысл
# для каждого фиксированного значения оставшихся атрибутов сделать по записи на каждое значение выбранных:
Отношение, использованое в примерах выше, после приведения в 1НФ будет выглядеть как
 
{| class="wikitable"
! CourseId !! Lecturer !! Phone
В 2НФ запрещено, чтобы какие-либо атрибуты функционально зависели от части ключа. Рассмотрим следующий пример, уже приведенный в 1НФ:
 
{| class="wikitable"
! CourseId !! Year || Lecturer !! Exam
12
правок

Навигация