# Нормальные формы схем отношений

## 3.1 Первая нормальная форма (1НФ).

Рассмотрим отношение R{A1, A2,..., An}. Возможный ключ k отношения R - это комбинация атрибутов (возможно, состоящих из одного атрибута), обладающих следующими свойствами:

1. В каждом кортеже отношения R величина ключа k, единственным образом определяет этот кортеж.
2. Не существует атрибута в возможном ключе k, который мог быть удалён без нарушения свойства 1.

Всегда существует, по крайней мере, один возможный ключ, то есть комбинация всех атрибутов R удовлетворяет свойству 1. Если в отношении R имеется несколько возможных ключей, то один из них выбирается в качестве первичного. Атрибут Ai отношения R называют также первичным, если он входит в состав любого ключа (возможного или первичного) отношения. Рассмотрим 4 уровня нормализации схем отношений и соответственно четыре нормальные формы отношений: 1НФ, 2НФ, 3НФ, 4НФ. Их взаимное отношение можно представить в виде:

Отношения являются как бы вложенными друг в друга по возрастанию номера. Например, если отношение находится в 4НФ, то оно будет удовлетворять и условиям: 3НФ, 2НФ, 1НФ. Отношения находятся в 1НФ, если каждый атрибут отношения является простым (атомарным) атрибутом, то есть отсутствуют составные.

Рассмотрим схему отношения: Автомобиль (модель, марка, изготовитель ( завод, город )). В данном случае атрибут изготовитель составной. Для приведения к 1НФ отношения необходимо избавится от составного отношения - изготовитель. Этого можно добиться, рас-смотрев вместо составного атрибута его составляющие: Автомобиль (модель, марка, название завода изготовителя, город ). Приведение отношения к 1НФ достаточно для реализации языков запросов.

## 3.2 Вторая нормальная форма (2НФ)

Чтобы рассмотреть 2НФ, введём понятие полной зависимости. Пусть X и Y - подмножества атрибутов отношения R и X → Y. Если Y функционально не зависит от любого под-множества A множества X (причём A не совпадает с X ), то Y называют полностью зависимым от X в R. Говорят, что отношение R находится во 2НФ, если оно нормализовано, то есть находится в 1НФ, и каждый не первичный атрибут полностью зависит от первичного ключа. Пусть имеется отношение ПОСТАВКИ, содержащее данные о поставках (идентифицируемых П№ ), поставляемых ими товарах и их ценах: ПОСТАВКИ (П№, ТОВАР, ЦЕНА) Предположим, что поставщик может поставлять разные товары, а один и тот же товар могут поставлять разные поставщики. То есть, ключ отношения (выделенный шрифтом) будет состоять из атрибутов П№ и ТОВАР. Известно, что цена любого товара зафиксирована (то есть все поставщики поставляют товар по одной и той же цене). Семантика отношения включает следующие зависимости:

П№, ТОВАР → цена (по определению КЛЮЧА) ТОВАР → цена

Можно отметить неполную функциональную зависимость атрибута цена от ключа. Это приводит к следующим аномалиями: Аномалия включения. Если у поставщика появляется новый товар, информация о товаре и его цене не сможет храниться в базе данных до тех пор, пока поставщик не начнёт поставлять его. Аномалия удаления. Если поставки некоторого товара прекращаются, из базы данных придётся удалить сведения о товаре и его цене, даже если он имеется в наличии у поставщиков. Аномалия обновления. При изменении цены товара необходим полный просмотр отношения с целью найти все поставки товара, чтобы изменение цены было отражено для всех поставщи-ков. То есть, изменение значения атрибута одного объекта влечёт необходимость изменений в нескольких кортежах отношения; в противном случае база данных окажется несогласованной. Причиной этих аномалий является неполная функциональная зависимость атрибута цена от ключа, что обусловлено объединением в отношении ПОСТАВКИ двух семантических фактов в одной структуре ([1], основная литература). Разложение отношения ПОСТАВКИ на два отношения устраняет неполную функциональную зависимость. Отношение находится во 2НФ, если оно находится в 1НФ и каждый не первичный атрибут функционально полно зависит от ключа (ключей). Следовательно разло-жение приводит к отношению в 2НФ:

ПОСТАВКИ (П№, ТОВАР) ЦЕНА-ТОВАРА (ТОВАР, ЦЕНА)

Цену товара конкретной поставки можно определить путём соединения двух отношений по атрибуту ТОВАР. Изменение цены товара вызовет модификацию лишь одного кортежа второго отношения. Возможный ключ. Возможный ключ представляет собой атрибут, или набор атрибутов, кото-рый можно использовать для данного отношения в качестве первичного ключа. Первичный ключ всегда является возможным ключом, не исключено наличие других возмож-ных ключей. Детерминант. Если А → В есть ФЗ и В не зависит функционально от любого подмноже-ства А, то говорят, что А представляет собой детерминант В. Атрибут, входящий в ключ, называется первичным, в противном случае он называется не первичным. ФЗ А → В называется полной ФЗ, если В зависит от всей группы атрибутов А, а не от её части (подмножества). Например, если А= А1, А2,...Аk; А1, А2 → В, то ФЗ В от А неполная. Доменом называется совокупность однотипных значений данных. Число атрибутов, входящих в отношение, называют степенью отношения, а число кортежей отношения - кардинальным числом или мощностью отношения. Нормализованное отношение представляется в виде табличной структуры. Имя таблицы соответствует имени отношения, имена столбцов — именам атрибутов, а строки таблицы — кортежам. Описание каждого отношения состоит из имени отношения, за которым в круглых скобках следует список атрибутов (это описание называют интенсионалом, или схемой отношения). Под описанием приведено некоторое заполнение кортежей отношения (экстенсионал отношения). РБД является совокупностью изменяющихся во времени нормализованных отношений различных степеней, которые могут быть связаны друг с другом через общие домены. Отношение называется нормализованным, если каждая компонента n-ки (кортежа) является простым, атомарным значением, не состоящим из группы значений. Пусть имеется n доменов D1, D2,..., Dn. Отношение R определяется как множество упорядоченных n-ок (кортежей), являющееся под-множеством декартова произведения доменов. Домен (множество) Di представлен в кортежах i-м элементом.

## 3.3 Третья нормальная форма (3НФ).

Рассмотрим транзитивную зависимость следующего типа: Если А → В, В → А (В не является ключом) и В → С, то А → С. Пусть имеется отношение ХРАНЕНИЕ (ФИРМА, СКЛАД, ОБЪЁМ), которое содержит информацию о фирмах, получающих товары со складов, и объёмах этих складов. В отношении имеются функциональные зависимости:

ФИРМА → СКЛАД (фирма получает товары только с одного склада) СКЛАД → ОБЪЁМ

Аномалии. Если на данный момент отсутствует фирма, получающая товар со склада, то в базу данных нельзя ввести информацию об объёме склада (аномалия включения). Если последняя фирма перестаёт получать товар со склада, данные о складе и его объёме нельзя сохранить в базе данных (аномалия удаления). Если объём склада изменяется, необходим просмотр всего отношения и изменение кортежей для фирм, связанных со складом (аномалия обновления). Транзитивная зависимость (аналогично неполной функциональной зависимости в предыду-щем примере) вызвана наличием в отношении двух семантических различных фактов. Преобразование отношения в 3НФ устраняет рассмотренные аномалии. Отношение находится в 3НФ, если оно находится во 2НФ и в нём отсутствуют транзитивные зависимости не первичных атрибутов от ключа (ключей). Следующее разложение приводит к отношениям во 3НФ:

ХРАНЕНИЕ (ФИРМА, СКЛАД) С_ОБЪЁМ (СКЛАД, ОБЪЁМ)

Заметим, что 2НФ и 3НФ накладывают ограничения на зависимости только в связи с не первичными атрибутами. Поэтому в рассмотрение вводят усиленную 3НФ ( или НФ Бойса - Кодда ).

## 3.4 Нормальная форма Бойса - Кодда(НФБК).

Пусть имеется отношение ПРОЕКТ (Д№, ПР№, П№), отражающее использование в проектах деталей, поставляемых поставщиками. В проекте используется несколько деталей, но каждая деталь проекта поставляется только одним поставщиком. Каждый поставщик обслуживает только один проект, но проекты могут обеспечиваться несколькими поставщиками (разных деталей). Детали, проекты, поставщики идентифицируются соответственно номерами Д№, ПР№, П№. В отношении присутствуют следующие функциональные зависимости:

Д№, ПР№ → П№ (по определению ключа) П№ → ПР№

Рассматриваемое отношение находится в 3НФ, так как в нём отсутствуют неполные функциональные зависимости и транзитивные зависимости не первичных атрибутов от ключей; при этом, однако, наблюдаются следующие аномалии: Аномалии. Факт поставки поставщиком деталей для проекта не может быть занесён в базу данных до тех пор, пока в проекте действительно не начнут использоваться эти детали (аномалия включения). Если последний из типов деталей, поставляемых поставщиком для проекта, использован, данные о поставке будут также удалены из базы данных (аномалия удаления). Если меняется поставщик некоторого типа деталей для проекта, необходим просмотр отношения для изменения всех кортежей, содержащих эти детали (аномалия обновления). Разложение исходного отношения на отношения в НФБК устраняет перечисленные аномалии. Отношение находится в НФБК, если оно находится в 3НФ и в нём отсутствуют зависимости первичных атрибутов от не первичных. Эквивалентное определение требует, чтобы все детерминанты (то есть домены функциональных зависимостей) были возможными ключами. Для этого необходимо устранить в данном отношении зависимость П№ → ПР№. Следующее разложение приводит к отношениям в НФБК:

ПРОЕКТ - ДЕТАЛЬ (Д№, ПР№) ПОСТАВКИ (П№, ПР№)

Отношение R находится в НФ БК, если для всех зависимостей X → А, когда А не при-надлежит Х, Х является возможным ключом отношения R. Обычно атрибут, от которого функ-ционально полно зависит другой, называется детерминантом. Поэтому говорят, что отношение R находится в НФ БК, если все детерминанты являются ключами. 2НФ более информативна, чем первая, а 3НФ более информативна, чем вторая. Поэтому 3НФ и усиленная. 3НФ более понятны пользователю и приспособлены к реализации. Рассмотрим отношение R ( X, Y, Z ), где X, Y, Z - множество атрибутов. Кортеж отношения R ( X, Y, Z) обозначим через . Если в отношении R ( X, Y, Z) присутствуют кортежи <x, y, z> <x, y′, z>...; <x, y, z′> <x, y′, z′>, то говорят, что существует многозначная зависимость атрибутов Y и Z от X. Эта зависимость обозначается X →→ Y. Отношение R находится в 4НФ, если всякий раз, когда существует многозначная зависимость X →→ Y ( где Y ≠Ø, Y X, и XY состоит не из всех атрибутов R), так же существует зависимость X→ А для любого атрибута А в R. Получение отношений НФ достигается декомпозицией их схем. Под декомпозицией схемы отношения R ={ A1, A2,..., An } понимается замена схемы совокупностью отдельных схем ρ ={ R1, R2,..., Rk } таких, что R1 ∪ R2 ∪... ∪ Rn =R ={ A1, A2,..., An }. При этом не накладывается никаких ограничений на пересечение любых двух элементов совокуп-ности ρ. Для получения нужных данных из базы разрабатываются специальные языки манипу-лирования данными, обеспечивающие выполнение необходимых операций. Для разработки и исследования языков манипулирования данными используют математический аппарат, осно-ванный на следующих трёх подходах: реляционная алгебра; реляционное исчисление с переменными - кортежами; реляционное исчисление с переменными - атрибутами.

Таким образом процесс нормализации состоит из четырёх шагов.

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

Приведение к 2НФ Устранение неполной зависимости

Приведение к 3НФ Устранение транзитивной зависимости