Базы данных. Уровни данных. Нормальные формы схем отношений. Аксиома дополнения (добавления). Способы размещения с применением Хэш-функции, страница 3

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

П№, ТОВАР->ЦЕНА                                   ТОВАР->ЦЕНА

Имеем неполную функциональную зависимость ЦЕНА от ключа.

Аномалия – такая ситуация в БД, приводящая к противоречию в БД, либо существенно усложняющая обработку данных.

Аномалия включения – если у поставщика появляется новый ТОВАР информация о товаре и его ЦЕНЕ не сможет хранится в БД, пока поставщик не начнет поставлять ТОВАР.

Аномалия удаления – если поставка ТОВАРА закончилась из БД придется удалить все сведения о ТОВАРЕ и его ЦЕНЕ, даже если он имеется в наличие у ПN.

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

Причина аномалий – неполная функциональная зависимость.

Разложение отношения ПОСТАВКИ на два устраняет неполную функциональную зависимость.

ПОСТАВКА(ПN, ТОВАР)                                         ЦЕНА_ТОВАРА(ТОВАР, ЦЕНА)

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

Пример.

Рассмотрим отношение содержащее информацию о расходе рабочего времени программистом:

Деятельность_программиста(№программы – A, №проекта – B, название_программы  –  C,  имя_программиста – D, количество_ рабочих_часов – E)

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

* - первичные атрибуты элементов возможных ключей.

___ - первичные ключи (необходимы для идентификации картежа)

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

Для этого примера не рационально иметь возможными ключами атрибуты D,C так как могут появится однофамильцы или программы с одинаковым названием, более того, если в некоторый момент времени над программой никто не работает ее имя будет утеряно. Имя программиста также исчезает из БД если он не работает. Если убрать * против названий атрибутов D,C отношение перестает быть заданным во 2 нф.

Пример.

Источник_снабжения(№поставщика - A, №партии_товара – B, имя_поставщика – C, сведения_о_поставщике – D, цена - E)

Возможные ключи – A,B

Атрибут А не определяется значением атрибута С.

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

Имеем аномалию включения. D не могут заполнить до фактической поставки.

Аномалия удаления – если поставщик задерживает поставку, то удаление картежа соответствующего данному значению атрибута А вызовет удаление D.

Аномалия обновления – если требуется изменить значение атрибута D, то придется внести одинаковые изменения в несколько картежей.

Аномалии устраняются разбиением исходного отношения на два, заданных во 2 нф.

Только Е полностью зависит от составного ключа.

Лекция 22.09

Пример.

Имеем отношение хранение (фирма, склад, объем)

Фирма->склад, получает товары только с одного склада. Склад->объем.

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

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

Аномалия обновления. Если объем склада изменится, необходим просмотр всего отношения и изменение картежей для фирм, связанных со складом.