Реляционная база данных считается эффективной, если она обладает приведенными ниже характеристиками.
1. Минимизация избыточности данных. В базе данных присутствует избыточность, если одни и те же данные находятся в нескольких местах. Вследствие этого память компьютера используется неэкономно и времени на корректировку данных тратится больше. Так, в таблице 1 содержится много избыточной информации.
Таблица 1 – Сведения о студентах, изучающих иностранные языки
Если, например, название курса «Английский» изменится на «Английский для делового общения», то его надо заменить во всех записях о тех студентах, которые изучают данный курс.
2. Минимальное использование отсутствующих значений (Null-значений). В нашем примере неясно, означают ли Null-значения атрибута «Преподаватель», что для группы А2 не определен преподаватель или его Ф.И.О. не введено. Из-за неопределенности интерпретации Null-значений их использование желательно свести к минимуму.
3. Предотвращение потери информации. Если, например, студент Шкляр Е.К. решит не изучать немецкий язык, то придется удалить запись со сведениями о нем и тогда вообще будет потеряна информация о данном курсе.
Минимизировать избыточность данных позволяет процесс, называемый нормализацией таблиц. Нормализацию можно продемонстрировать на примере таблиц реляционной модели предметной области БАНК(см. рисунок 4.2). Но чтобы изложить этот процесс полнее, будем исходить из предположения, что данные этой предметной области представлены в следующих двух таблицах:
Примечание. Д — депозитный счет, Т — текущий счет.
Примечание. Ключ — комбинация НК, НС.
Методику нормализации таблиц разработал американский ученый Э.Ф. Кодд в 1970 г. Ее суть сводится к приведению таблиц путем их декомпозиции к той или иной нормальной форме. Были выделены три нормальные формы — 1НФ, 2НФ, ЗНФ. Позже стали выделять нормальную форму Бойса—Кодда (НФБК), а затем 4НФ и 5НФ. Каждая последующая нормальная форма вводит определенные ограничения на хранимые в базе данные.
Реляционная база данных считается эффективной, если все ее таблицы находятся как минимум в 3НФ.
Определение 1НФ
Таблица находится в 1НФ, если все ее поля содержат только неделимые значения.
Таблицы ФИЛИАЛ и КЛИЕНТ не удовлетворяют требованиям 1НФ. Для приведения их к 1НФ надо вставить новые записи следующим образом:
Полученные таблицы неэффективны, так как содержат много избыточной информации. Необходимо привести их к 2НФ.
Изложение последующих нормальных форм базируется на понятии функциональной зависимости. Функциональная зависимость— это семантическое понятие, отображающее определенную семантическую связь между атрибутами сущности. Пусть сущность характеризуется множеством атрибутов X. Некий атрибут или подмножество атрибутов данного множества — А является функционально зависимым от X тогда и только тогда, когда каждой комбинации значений X соответствует одно и только одно значение А. Это обозначается как Х ® А.
Определение 2НФ
Таблица находится в 2НФ, если она удовлетворяет требованиям 1НФ и неключевые поля функционально полно зависят от первичного ключа.
Пусть {X1, X2, ..., Xk} — множество полей, образующих первичный ключ. Неключевое поле А функционально полно зависит от первичного ключа, если:
• оно функционально зависит от первичного ключа, т.е. {X1, X2, ..., Xk} ® А;
• не существует функциональной зависимости А ни от какого подмножества полей первичного ключа (в противном случае А находится в частичной функциональной зависимости от первичного ключа).
В таблице КЛИЕНТ неключевые поля ФИО_К, СОЦ_П, АДР_К функционально зависят от ключа (НК, НС), это запишем как
НК, НС ® ФИО_К, СОЦ_П, АДР_К.
Кроме того, они функционально зависят от подмножества ключа — НК, что запишем
НК ® ФИО_К, АДР_К, СОЦ_П.
Следовательно, неключевые поля ФИО_К, СОЦ_П, АДР_К находятся в частичной функциональной зависимости от первичного ключа (НК, НС) и нарушаются требования 2НФ. Эти поля надо удалить из таблицы КЛИЕНТ. Полученную в результате таблицу назовем КЛИЕНТ — СЧЕТ (таблица 1), которая имеет вид
Эта таблица удовлетворяет требованиям 2НФ.
Удаленные неключевые поля помещаются в новую таблицу совместно с подмножеством НК, от которого они зависят. И это подмножество будет первичным ключом новой таблицы КЛИЕНТ (таблицы 2) вида
Новая таблица КЛИЕНТ также удовлетворяет требованиям 2НФ. Ее неключевые поля функционально полно зависят от первичного ключа.
Полученные таблицы 1, 2 не содержат избыточной информации, и нет основания приводить их к 3НФ.
Таблица ФИЛИАЛ удовлетворяет требованиям 2НФ, так как ее неключевые поля НФ, АДР_Ф, НМ, ОСТ, ТИП функционально полно зависят от первичного ключа
НС ® НФ, АДР_Ф, НМ, ОСТ, ТИП
Но в таблице ФИЛИАЛ повторяется информация о филиале для всех счетов, обрабатываемых им. Поэтому ее надо привести к 3НФ.
Определение 3НФ
Таблица находится в 3НФ, если она удовлетворяет требованиям 2НФ и не содержит транзитивных зависимостей.
Транзитивной зависимостью называется функциональная зависимость между неключевыми полями. В таблице ФИЛИАЛ она наблюдается
НФ ® АДР_Ф, НМ
Следовательно, нарушаются требования 3НФ. Из таблицы ФИЛИАЛ надо удалить поля, участвующие в этой транзитивной зависимости, — АДР_Ф, НМ. Получится таблица, характеризующая счет (таблица 3), вида
Затем создается новая таблица, в которую помещаются удаленные поля и поле, от которого они зависят (таблица 4). Она имеет вид
Полученные таблицы 3, 4 приведены к 3НФ. В них каждая запись есть отдельное независимое утверждение. Повторяются только значения внешнего ключа НФ в таблице СЧЕТ, что неизбежно, так как одним филиалом могут обрабатываться несколько счетов.
Как видим, нормализация приводит к фрагментации исходных таблиц. В нашем примере таблица КЛИЕНТ разбивается на таблицы 1, 2, а таблица ФИЛИАЛ — на таблицы 3, 4. Осуществив связь этих таблиц посредством связи первичных и внешних ключей, получим реляционную модель данных предметной области БАНК,в которой минимизирована избыточность данных. Эта модель представлена на рисунке 4.3.
Рисунок 4.3 – Реляционная модель предметной области БАНК после нормализации
Система управления базами данных – это совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями.
Любая современная СУБД предоставляет эффективные средства для решения следующих задач:
1) создание базы данных, в которой собраны данные многих пользователей с целью удовлетворения их информационных потребностей;
2) быстрое извлечение из базы необходимых данных по запросам пользователей;
3) выполнение вычислений над данными;
4) создание экранных форм, обеспечивающих удобство работы с данными;
5) вывод данных из базы в отчетах;
6) разработка приложений (программ);
7) экспорт данных в другие базы и импорт данных из других баз данных;
8) публикация данных в сети Интернет.
СУБД обеспечивает также управление БД:
1) защиту данных от несанкционированного доступа и сбоев в работе компьютерной системы;
2) восстановление базы данных в случае ее повреждения;