Мегаобучалка Главная | О нас | Обратная связь


Что такое нормальные формы? Какие из них используются на практике?



2019-08-13 251 Обсуждений (0)
Что такое нормальные формы? Какие из них используются на практике? 0.00 из 5.00 0 оценок




Нормальные формы - это свойства отношения (таблиц) в реляционной модели данных. В приведении таблиц базы данных к нормальным формам заключается процесс нормализации.

Первоначально Эдгаром Коддом были определены только три нормальные формы. Дальнейшая разработка реляционной теории привела к появлению еще нескольких форм и на данный момент их насчитывается шесть. Но на практике достаточно приведения базы данных к третьей нормальной форме.

Прежде чем говорить о нормальных формах, нужно дать определение понятию функциональной зависимости атрибутов в отношении (т.е. столбцов в таблице):

В значении переменной отношения R атрибут Y функционально зависит от атрибута X в том и только в том случае, если каждому значению X соответствует в точности одно значение Y. В этом случае также говорят, что Х функционально определяет Y, обозначается как X ‑> Y.

Пример

В таблице с атрибутами "Ф.И.О. студента, номер зачетной книжки", атрибут "Ф.И.О." функционально зависит от атрибута "номер зачетной книжки", т.к. каждому номеру соответствует только один студент. Но не наоборот, т.к. могут быть разные студенты с одним и тем же Ф.И.О. Номер книжки функционально определяет студента). Nкниж.‑>студент.

Также необходимо пояснить что такое транзитивные функциональные зависимости атрибутов:

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

Пример

Дополним таблицу из предыдущего примера атрибутом "рейтинг в БАРС".

"номер зачетной книжки (A), Ф.И.О. студента (B), рейтинг (C)"

Зачетная книжка определяет студента (A‑>B), студент определяет свой рейтинг (B‑>C), но рейтинг не определяет зачетную книжку. Тогда имеем транзитивную зависимость между зачетной книжкой и рейтингом через студента.

Другой пример - таблица с атрибутами "личный номер преподавателя, должность, оклад". Имеем две функциональные зависимости "личный номер" ‑> "должность" и "должность" ‑> "оклад", и одну транзитивную "личный номер" ‑> "оклад".

 

Первая нормальная форма.

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

Простыми словами это означает, что каждый атрибут отношения должен хранить одно-единственное значение и не являться ни множеством, ни списком - т.е. значения в столбцах должны быть атомарным, а это выполняется автоматически, если мы придерживаемся реляционных принципов.

 

Вторая нормальная форма.

Схема отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от её потенциального ключа.

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

Пример.

Пусть у нас имеется таблица предприятий со следующими атрибутами:

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

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

Ключевая фраза - вторая нормальная форма - про правильные ключи.

Третья нормальная форма

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

Переводя на практический язык:

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

Пример 1.

Рассмотрим таблицу с атрибутами "номер заказа, покупатель, товар, цена, количество, сумма". Очевидно, что атрибут сумма функционально зависит от двух других - цена и количество. Это нарушение третьей нормальной формы. Как вариант нормализации - столбец с суммой можно просто убрать из таблицы, он является избыточным.

Пример 2.

Рассмотрим таблицу Сотрудники (№ табельный, Фамилия, Имя, Отчество, Код должности, Оклад), пусть главный ключ - (№ табельный).

Можно заметить, что здесь присутствует зависимость между неключевыми столбцами "Код должности" и "Оклад". Оклад, как правило, зависит от должности, получается, что неключевой атрибут «Оклад» полностью функционально зависит от атрибута «Код должности», хотя этот атрибут и не является ключевым.

К третьей нормальной форме любое отношение приводится путем декомпозиции. Разобьем исходную таблицу на две:

Должности (Код должности, Оклад), Primary key (Код должности);

Сотрудники (№ табельный, Фамилия, Имя, Отчество, Код должности), Primary key (Код должности);

Foreign key (Код должности) references Должности (Код должности);

Теперь, как мы видим, в отношении «Должности» неключевой атрибут «Оклад» полностью функционально зависит от простого первичного ключа «Код должности» и только от этого ключа.

Заметим, что в отношении «Сотрудники» все четыре неключевых атрибута «Фамилия», «Имя», «Отчество» и «Код должности» полностью функционально зависят от простого первичного ключа «№ табельный». В этом отношении атрибут «Код должности» – внешний ключ, ссылающийся на первичный ключ отношения «Должности».

Ключевая фраза - третья нормальная форма - про правильные неключевые атрибуты.

 



2019-08-13 251 Обсуждений (0)
Что такое нормальные формы? Какие из них используются на практике? 0.00 из 5.00 0 оценок









Обсуждение в статье: Что такое нормальные формы? Какие из них используются на практике?

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (251)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)