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

Рис. 8.2. Отношение, приведенное к 1НФ

Рис. 8.1. Отношение, не находящееся в 1НФ

Для преобразования этого ненормализованного отношения в 1НФ необходимо в составном отношении РЕЙСЫ заменить отношение РАСПИСАНИЕ соответствующими атрибутами, как показано на рисунке 8.2.

Для изучения второй нормальной формы (2НФ) рассмотрим следующий пример. Пусть имеется отношение «ПОСТАВКИ», содержащее данные о поставщиках (идентифицируемых номером П#), поставляемых ими товарах и их ценах:

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

Предположим, что поставщик может поставлять различные товары, а один и тот же товар могут поставлять разные поставщики. Таким образом, первичный ключ отношения (выделенный полужирным шрифтом) будет состоять из атрибутов «П#» и «ТОВАР». Известно, что цена любого товара зафиксирована (т. е. все поставщики поставляют товар по одной и той же цене). Семантика отношения включает следующие зависимости:

П #, ТОВАР ® ЦЕНА (по определению первичного ключа);

ТОВАР ® ЦЕНА

Можно отметить неполную функциональную зависимость атрибута «ЦЕНА» от первичного ключа. Это приводит к следующим аномалиям.

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

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

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

Причиной этих аномалий является неполная функциональная зависимость атрибута «ЦЕНА» от первичного ключа, что обусловлено объединением в отношении «ПОСТАВКИ» двух семантических фактов в одной структуре: первый факт – поставщик поставляет товар, второй факт – каждый товар имеет фиксированную цену независимо от того, какой поставщик его поставляет. Разложение отношения «ПОСТАВКИ» на два отношения устраняет неполную функциональную зависимость:

ПОСТАВКИ (П#,ТОВАР)

ЦЕНА_ТОВАРА (ТОВАР, ЦЕНА)

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

После выполнения разложения, цену товара конкретной поставки можно определить путем соединения двух отношений по атрибуту «ТОВАР». Изменение цены товара вызовет модификацию лишь одного кортежа второго отношения.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: