Что такое нормальные формы? Какие из них используются на практике?
Нормальные формы - это свойства отношения (таблиц) в реляционной модели данных. В приведении таблиц базы данных к нормальным формам заключается процесс нормализации. Первоначально Эдгаром Коддом были определены только три нормальные формы. Дальнейшая разработка реляционной теории привела к появлению еще нескольких форм и на данный момент их насчитывается шесть. Но на практике достаточно приведения базы данных к третьей нормальной форме. Прежде чем говорить о нормальных формах, нужно дать определение понятию функциональной зависимости атрибутов в отношении (т.е. столбцов в таблице): В значении переменной отношения 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 Должности (Код должности); Теперь, как мы видим, в отношении «Должности» неключевой атрибут «Оклад» полностью функционально зависит от простого первичного ключа «Код должности» и только от этого ключа. Заметим, что в отношении «Сотрудники» все четыре неключевых атрибута «Фамилия», «Имя», «Отчество» и «Код должности» полностью функционально зависят от простого первичного ключа «№ табельный». В этом отношении атрибут «Код должности» – внешний ключ, ссылающийся на первичный ключ отношения «Должности». Ключевая фраза - третья нормальная форма - про правильные неключевые атрибуты.
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (251)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |