Аномалии модификации данных
После составления концептуальной (логической) схемы БД необходимо проверить её на отсутствие аномалий модификации данных. Дело в том, что при неправильно спроектированной схеме БД могут возникнуть аномалии выполнения операций модификации данных. Эти аномалии обусловлены ограниченностью структуры РМД (отсутствием агрегатов и проч.).
Рассмотрим эти аномалии на примере отношения со следующими атрибутами (атрибуты, входящие в ключ, выделены подчёркиванием):
ПОСТАВКИ (Номер поставки, Название товара, Цена товара, Количество, Дата поставки, Название поставщика, Адрес поставщика)
Различают три вида аномалий: аномалии обновления, удаления и добавления. Аномалия обновления может возникнуть в том случае, когда информация дублируется. Другие аномалии возникают тогда, когда две и более сущности объединены в одно отношение. Например:
- Аномалия обновления: в отношении ПОСТАВКИ она может возникнуть, если у какого-либо поставщика изменился адрес. Изменения должны быть внесены во все кортежи, соответствующие поставкам этого поставщика; в противном случае данные будут противоречивы.
- Аномалия удаления: при удалении записей обо всех поставках определённого поставщика все данные об этом поставщике будут утеряны.
- Аномалия добавления: в нашем примере она возникнет, если с поставщиком заключен договор, но поставок от него ещё не было. Сведения о таком поставщике нельзя внести в таблицу ПОСТАВКИ, т.к. для него не определён ключ (номер поставки и название товара) и другие обязательные атрибуты.
Для решения проблемы аномалии модификации данных при проектировании реляционной БД проводится нормализация отношений.
В рамках реляционной модели данных Э.Ф. Коддом был разработан аппарат нормализации отношений и предложен механизм, позволяющий любое отношение преобразовать к третьей нормальной форме. Нормализация схемы отношения выполняется путём декомпозиции схемы.
Декомпозицией схемы отношения R называется замена её совокупностью схем отношений Аi таких, что
и не требуется, чтобы отношения Аi были непересекающимися. Декомпозиция отношения не должна приводить к потере зависимостей между атрибутами сущностей. Для декомпозиции должна существовать операция реляционной алгебры, применение которой позволит восстановить исходной отношение.
Покажем нормализацию на примере отношения КНИГИ (табл. 8.1):
Id | - идентификатор (первичный ключ), |
Code | - шифр рубрики (по ББК – библиотечно-библиографической классификации), |
Theme | - название рубрики (по ББК), |
Title | - название книги, |
Author | - автор(ы), |
Editor | - редактор(ы), |
Type | - тип издания (учебник, учебное пособие, сборник и.т.п.), |
Year | - год издания |
Pg | - количество страниц |
Таблица 8.1. Исходное отношение КНИГИ
Id | Code | Theme | Author | Title | Editor | Type | Year | Pg |
22.18 | МК | Бочков С. Субботин Д. | Язык программирования СИ | Садчиков П. Седов П. | учебник | |||
22.18 | МК | Джехани Н. | Язык АДА | Красилов А. Перминов О. | учебник | |||
32.97 | ВТ | Соловьев Г. Никитин В. | Операционные системы ЭВМ | учебное пособие | ||||
32.81 | Кибернетика | Попов Э.В. | Общение с ЭВМ на естественном языке | Некрасов А. | учебник | |||
32.97 | ПУ для ПЭВМ | Витенберг Э. | справочник | |||||
32.973 | ЭВМ | Коутс Р.Б Влейминк И. | Интерфейс «человек-компьютер» | Шаньгин В. | учебник |