Процедура нормализации отношений.

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

Реляционная база данных считается эффективной, если она следующими характеристиками.

1. Отсутствие избыточности. В системе присутствует избыточность, если одни и те же данные находятся в нескольких местах. При этом не только нерационально используется место в памяти, но и может возникать несогласованность и неоднозначность данных.

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

Отношение Студенты
Номер_студента Имя_студента Номер_курса Название_курса Преподаватель
Смирнов Французский ч 1 Батулев
Абдулов Испанский ч 3 Крупкина
Петров Французский ч 1 Батулев
Иванов Французский ч 2  
Иванов Французский ч 2  
Сидоров Французский ч 1 Батулев
Никитин Французский ч 2  

Таблица 1. Неэффективная реляционная база данных

Это может привести к следующим аномалиям:

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

б) Аномалии вставки. Перед тем, как ввести студента в базу данных, необходимо убедиться, что информация о посещаемом курсе представлена так же, как для других студентов, посещающих этот курс. Отношение в табл. 3 не исключает возможности того, что два студента будут посещать разные занятия, проводимые разными преподавателями с одним и тем же номер_курса.

2. Минимальное использование null-значений. Существует множество корректных представлений базы данных, но в некоторых из них может оказаться много кортежей, содержащих неопределенные значения (null). В табл. 3 три кортежа имеют неопределенное значение атрибута Преподаватель, так как для одного из курсов (Французский ч 2) еще не назначен преподаватель. Наряду с избыточностью, неопределенные значения — источник проблем в реляционных базах данных, поскольку невозможно точно определить, что они означают. Означает ли неопределенное значение атрибута Преподаватель в нашем примере, что для данного курса нет преподавателя, или имя его не было введено, а может быть этот курс нужно изучать самостоятельно и преподавателя не должно быть вовсе, поэтому указанный атрибут не применим к данным кортежам? Из-за сложности интерпретации null -значений их использование желательно свести к минимуму.

3. Предотвращение потери информации. Один из основных недостатков представления в табл. 3 — отсутствие информации о курсах, не посещаемых студентами. Более того, если студент Абдулов решит в дальнейшем не посещать курс испанского языка, это приведет к потере всей информации о курсе Испанский ч 3. Такая аномалия называется аномалией удаления.

С учетом вышесказанного, представление базы данных в табл. 2 более удачно.

 

 

Отношение Студент
Номер_студента Имя_студента Номер_курса
Смирнов
Абдулов
Петров
Иванов
Иванов
Сидоров
Никитин

 

Отношение Курс
Номер_курса Название_курса Преподаватель
Французский ч 1 Батулев
Французский ч 2  
Французский ч 3 Симонов
Испанский ч 1 Лопес
Испанский ч 2 Лопес
Испанский ч 3 Крупкина

 

 

Таблица 2. Более удачное представление базы данных

Возможность дублирования и сопутствующих ей аномалий (табл. 2.) устранена. Произведена декомпозиция исходного отношения на два отношения; внешний ключ Номер_курса связывает каждого студента с информацией о посещаемом курсе. Таким образом, все студенты одинаковым номером курса будут автоматически связаны с одним и тем же множеством данных о курсе. В случае изменения информации о курсе нужно изменить только соответствующий ему кортеж в отношении Курс. Если студент меняет посещаемый курс, необходимо изменить только номер курса; изменять информацию о курсе не нужно. При включении в базу данных нового студента нет необходимости вводить данные о посещаемом курсе, достаточно указать номер курса. Если все студенты, посещающие курс, удаляются базы данных, информация об этом курсе по-прежнему остается в базе данных в отношении Курс, т.е. теперь появилась возможность хранить информацию о курсах, у которых в настоящее время нет слушателей. Использование неопределенных значений также сократилось.

К такому представлению, как в табл. 2, можно прийти с помощью нормализации.

 

Первая нормальная форма.

Разработчик базы данных может из интуитивных соображений реализовать описанную базу данных в виде двух отношений: первое из них, Счет, содержит информацию обо всех счетах, обрабатываемых всеми филиалами банка, а второе, Клиент, содержит информацию о клиентах и внешний ключ Номер_клиента, связывающий каждого клиента с информацией о его счетах. Это представление показано в табл. 3.

Отношение Филиал
Название_филиала Адрес Номер_менеджера Счет Баланс Тип
065\69 Николаева,45 234.56 Д
-456.78 Т
12567.56 Т
065\78 Мира,6 789.65 Т
-23.67 Д

 

Отношение Клиент
Номер клиента Имя клиента Адрес Статус Номер счета
Иванов А.А. Гагарина, 23 Бизнес {120768, 348973}
Петров К.К. Кирова, 65 Личный {987654}
Сидоров И.И. Ленина, 13 Бизнес {745363, 678453, 348973}

Таблица 3. Ненормализованная база данных

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

Первая нормальная форма требует, чтобы домены всех атрибутов базы данных содержали только простые неделимые значения, а значением атрибута в кортеже должно быть одно значение из его домена. Представление таблицы 3 в lНФ показано в табл. 4.

Отношение Филиал
Название филиала Адрес Номер менеджера Номер счета Баланс Тип
065\69 Николаева,45 234.56 'Д'
065\69 Николаева,45 -456.78 'Т’
065\69 Николаева,45 12567.56 'Т’
065\78 Мира,6 789.65 ‘Т’
065\78 Мира,6 -23.67 'Д'

 

Отношение Клиент
Номер клиента Имя клиента Адрес Статус Номер счета
Иванов А.А. Гагарина, 23 Бизнес
Иванов А.А. Гагарина, 23 Бизнес
Петров К.К. Кирова, 65 Личный
Сидоров И.И. Ленина, 13 Бизнес
Сидоров И.И. Ленина, 13 Бизнес
Сидоров И.И. Ленина, 13 Бизнес

Таблица 4. Нормализованная база данных a 1НФ.

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

 

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

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

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

Таким образом, необходимо произвести следующую декомпозицию отношения Клиент.

Отношение Клиент
Номер_клиента Имя клиента Адрес Статус
Иванов А.А. Гагарина, 23 Бизнес
Петров К.К. Кирова, 65 Личный
Сидоров И.И. Ленина, 13 Бизнес

 

Отношение Счета_клиентов
Номер_клиента Номер счета

Эти отношения не содержат избыточности. В отношении Клиент для каждого клиента существует единственный кортеж, а отношение Счета_клиентов содержит по одному кортежу для представления каждой связи счет/клиент. Если клиент не имеет счета, информация о нем не будет потеряна. Тем не менее, в отношении Филиал все еще остается определенная избыточность. Чтобы избавиться от нее, необходима еще одна нормальная форма.

Третья нормальная форма.

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

Определение. Отношение находится в 3НФ, если оно, во-первых, находится в 2НФ, и, во-вторых, неключевые атрибуты не зависят между собой.

Если в отношении обнаружена такая зависимость, необходимо удалить участвующие в ней атрибуты. Затем следует создать новое отношение, в которое войдут удаленные атрибуты, а также атрибут, от которого они зависят. Этот атрибут становится первичным ключом нового отношения; он также остается в исходном отношении в качестве внешнего ключа, что позволяет воссоздать кортежи посредством естественного соединения. Итак, производится следующая декомпозиция отношения Филиал.

Отношение Филиал
Название_филиала Адрес Номер_менеджера
Crawley 1, High Street
Bugstone 12, Low Street

 

Отношение Счета
Номер_счета Баланс Тип Название_филиала
234.56 'Д' 065\69
-456.78 'Т’ 065\69
12567.56 'Т’ 065\69
789.65 ‘Т’ 065\78
-23.67 'Д' 065\78

Вопросы для самопроверки:

1. Дайте определение понятия функциональной зависимости атрибутов.

2. Что означает процесс нормализации баз данных?

3. Какие аномалии могут возникнуть в ненормализованной базе данных?

4. Дайте определение 1НФ.

5. Дайте определение 2НФ.

6. Дайте определение 3НФ.

Литература:

[1]

[3]

[5]