ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 7743
Скачиваний: 53
81
снижению занимаемого данными объема. Во-вторых, при большом объеме
данных придется постоянно осуществлять поиск первой записи клиента с це-
лью выяснения его номера телефона. В-третьих, в случае удаления первона-
чального заказа любого из клиентов информация о телефоне будет безвозврат-
но утрачена. Очевидно, что подобное решение приведёт только к ухудшению
ситуации.
4.2.2 Аномалии
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Аномалия – ситуация в таблицах БД, приводящая к проти-
воречиям и усложняющая процессы обработки данных.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Существует 3 вида аномалий:
1) аномалия удаления;
2) аномалия обновления;
3) аномалия добавления.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Аномалия удаления – ситуация, возникающая при удалении
некоторых записей в таблицах БД, которая приводит к возможной
потере данных, не предназначенных для удаления.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Если из таблицы 4.2 удалить любой из заказов клиента Иванова, напри-
мер, по причине неоплаты или отказа клиента, то это не приведет к потере ин-
формации о номере его телефона. Однако если удалить заказ Петрова по любой
причине, то информация о номере его телефона исчезнет из базы данных, по-
скольку других заказов у Петрова нет.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Аномалия обновления – ситуация, возникающая при измене-
нии некоторых записей в таблицах БД, которая приводит к воз-
можному просмотру всех записей в таблицах БД, а также к изме-
нению некоторых других записей.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Так, изменение номера телефона у Иванова на новый приведёт к тому,
что в таблице 4.2 потребуется просмотреть весь список заказов и в тех из них, в
которых клиентом является Иванов, изменить номер телефона на новый.
82
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Аномалия добавления – ситуация, возникающая при добав-
лении новых записей в таблицу БД, которая приводит к необходи-
мости просмотра целого набора записей в таблице БД вследствие
нехватки некоторой информации для внесения.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
В случае добавления нового заказа от клиента Петрова первоначально
необходимо будет просмотреть таблицу и найти предыдущие заказы Петрова
для того, чтобы внести уже имеющийся номер телефона в поле новой запи-
си [3].
4.2.3 Теория нормализации
Теория нормализации основана на том, что определенный набор отноше-
ний (таблиц) обладает лучшими свойствами при добавлении, изменении и уда-
лении данных, чем все другие наборы, с помощью которых можно представить
те же самые данные.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Нормализация – процесс реорганизации данных путем
устранения повторяющихся групп и других противоречий в органи-
зации данных с целью приведения набора таблиц к виду, позволяю-
щему осуществлять корректные операции над данными.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Воспользуемся данной теорией для решения проблемы аномального дуб-
лирования в примере из таблицы 4.2. Для этого проведем декомпозицию ис-
ходной таблицы на две новые, приведенные на рисунке 4.3.
Алгоритм декомпозиции, или нормализации, будет рассмотрен ниже, но
стоит отметить, что размещение информации о клиенте в отдельной таблице в
данном случае позволит избежать ситуаций избыточного дублирования данных
и возникновения аномалий. Теперь удаление любого заказа не будет ни в одном
из случаев приводить к потере информации о телефоне клиента, даже если уда-
лить все записи из таблицы «Заказы». Проблема аномалии модификации не по-
требует просмотра всей таблицы и будет проведена лишь единожды в таблице
«Клиенты». Изменится лишь порядок добавления информации при появлении
новых клиентов: первоначально необходимо будет внести данные о новом кли-
енте в таблицу «Клиенты», а затем занести информацию о новом заказе этого
клиента в таблицу «Заказы».
83
Рис. 4.3 – Таблицы «Заказы» и «Клиенты»
Как видно, данный набор таблиц хранит тот же самый объем данных, что
и в таблице 4.2, однако он обладает лучшими свойствами. Подобная схема БД
называется корректной.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Корректной называется схема БД, в которой отсутствуют
нежелательные зависимости между атрибутами отношений.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Теория нормализации основана на анализе функциональных зависимо-
стей между атрибутами отношений. Понятие функциональной зависимости яв-
ляется фундаментальным в теории нормализации реляционных баз данных.
Функциональные зависимости определяют устойчивые отношения между объ-
ектами и их свойствами в рассматриваемой предметной области.
Процесс проектирования с использованием декомпозиции представляет
собой процесс последовательной нормализации схем отношений, при этом
каждая последующая итерация соответствует нормальной форме более высоко-
го уровня и обладает лучшими свойствами по сравнению с предыдущей.
Каждой нормальной форме соответствует некоторый определенный
набор ограничений, и отношение находится в некоторой нормальной форме,
если удовлетворяет свойственному ей набору ограничений.
Номер (ПК) ФИО Клиента (ВК) Дата заказа Сумма заказа, руб.
568
Иванов С. П.
14.05.2017
22700
569
Петров И. С.
14.05.2017
42000
«Заказы»
ФИО Клиента (ПК) Телефон клиента
Иванов С. П.
445566
Петров И. С.
778899
«Клиенты»
570
Иванов С. П.
16.05.2017
35200
571
Иванов С. П.
19.05.2017
25000
84
В теории реляционных БД обычно выделяется следующая последова-
тельность нормальных форм:
• первая нормальная форма (1НФ);
• вторая нормальная форма (2НФ);
• третья нормальная форма (3НФ);
• нормальная форма Бойса – Кодда (НФБК);
• четвертая нормальная форма (4НФ);
• пятая нормальная форма (5НФ).
Основные свойства нормальных форм:
• каждая следующая нормальная форма «улучшает» свойства предыду-
щей;
• при переходе к каждой следующей нормальной форме свойства
предыдущих нормальных форм сохраняются.
В основе классического процесса нормализации лежит последователь-
ность переходов от предыдущей нормальной формы к последующей, и так до
последней. Однако на практике в большинстве случаев используются только
первые три нормальные формы, т. е. нормализация проводится до достижения
всеми таблицами схемы БД третьей нормальной формы.
Функциональные зависимости определяют не текущее состояние БД, а
все возможные ее состояния, то есть они отражают те связи между атрибутами,
которые присущи реальному объекту, который моделируется с помощью таб-
лиц БД.
Поэтому определить функциональные зависимости по текущему состоя-
нию БД можно только в том случае, если экземпляр БД содержит абсолютно
полную информацию (то есть никаких добавлений и модификации БД не пред-
полагается). В реальной жизни это требование невыполнимо, поэтому набор
функциональных зависимостей задает разработчик или системный аналитик,
исходя из глубокого системного анализа предметной области [8].
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Понятие зависимости атрибутов или функциональной зави-
симости можно определить следующим образом: атрибут В
функционально зависит от атрибута А, если каждому значе-
нию А соответствует в точности одно значение В (обозначается
А→В).
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
85
То есть во всех кортежах (записях) с одинаковым значением атрибута А
атрибут В будет обязательно иметь также одно и то же значение. В качестве А и
В могут выступать как простые атрибуты, так и составные, т. е. состоящие из
нескольких атрибутов.
Так, в рассматриваемой выше таблице 4.2 очевидно имелась функцио-
нальная зависимость между атрибутами «ФИО клиента» и «Телефон клиента»,
которая и приводила к аномалиям и избыточности. В данном примере наличие
такой зависимости привело к декомпозиции отношения и его преобразованию в
два связанных отношения.
4.2.4 Нормальные формы
Как уже отмечалось, на практике процесс нормализации БД состоит в по-
следовательном приведении исходных таблиц БД сначала к первой, затем ко
второй и третьей нормальным формам.
Первая нормальная форма (1НФ)
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Таблица находится в первой нормальной форме (в 1НФ), ес-
ли все значения атрибутов являются простыми, а все записи – уни-
кальными. Любая реляционная таблица по умолчанию находится
в 1НФ.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
В большинстве случаев процесс нормализации не потребует приведения
таблицы к 1НФ, ведь все реляционные таблицы уже находятся в 1НФ. Тем не
менее, возможны ситуации, когда некоторые абстрактные таблицы, не являю-
щиеся реальными таблицами БД, необходимо нормализовать и, прежде всего,
привести к 1НФ.
В качестве примера рассмотрим таблицу 4.4, хранящую информацию о
заказах товаров. В данной таблице имеются данные о заказе (Номер и Дата), о
клиенте, сделавшем заказ (ФИО и Телефон), а также о заказанных товарах и их
количестве.
Таблица 4.4 – Заказы товаров (ненормализованная таблица)
Номер
ФИО Клиента Телефон
Дата
Товары
568
Иванов С. П.
445566
14.05.2017 Стул – 10 шт.
Стол – 3 шт.