Создание многотабличной базы данных
Цели работы:На примере построения многотабличной базы освоить приёмы нормализации данных в БД.
Задачи работы:научиться проектировать и создавать многотабличную базу данных.
Общие сведения.
Базы данных должны проектироваться предельно аккуратно, чтобы гарантировать надёжное и правильное хранение данных. Поскольку реляционная модель БД основывается на первичных ключах для идентификации объектов и внешних ключах для создания связей, необходимо следить за целостностью (достоверностью) ключей.
Одной из целей создания базы данных является создание нормализованных (правильно разработаны) таблиц. Нормализация подразумевает разделение таблицы на несколько таблиц с целью исключения дублирования данных.
База данных считается нормализованной, когда каждое поле содержит только одно значение, а каждая таблица состоит из верного набора полей.
Нормализация таблиц базы данных - первый шаг на пути проектирования структуры реляционной базы данных. Строго говоря, конечно, не самый первый - сначала надо решить, что же мы вообще будем хранить в базе, то есть определиться со структурой полей, их типами и размерностью, смыслом хранимой в них информации.
Теория нормализации реляционных баз данных была разработана в конце 70-х годов 20 века. Согласно ей, выделяются шесть нормальных форм, пять из которых так и называются: первая, вторая, третья, четвертая, пятая нормальная форма, а также нормальная форма Бойса-Кодда, лежащая между третьей и четвертой. Существует шесть нормальных форм. Каждая нормальная форма разрабатывается на основе предшествующих. На практике в основном применяются три нормальные формы (остальные применяются редко).
База данных считается нормализованной, если ее таблицы (по крайней мере, большинство таблиц) представлены как минимум в третьей нормальной форме. Часто многие таблицы нормализуются до четвертой нормальной формы, иногда, наоборот, производится денормализация.
Главная цель нормализации базы данных - устранение избыточности и дублирования информации. В идеале при нормализации надо добиться, чтобы любое значение хранилось в базе в одном экземпляре, причем значение это не должно быть получено расчетным путем из других данных, хранящихся в базе.
Первая нормальная форма
Первая нормальная форма:
· запрещает повторяющиеся столбцы (содержащие одинаковую по смыслу информацию)
· запрещает множественные столбцы (содержащие значения типа списка и т.п.)
· требует определить первичный ключ для таблицы, то есть тот столбец или комбинацию столбцов, которые однозначно определяют каждую строку
Вторая нормальная форма
Вторая нормальная форма требует, чтобы неключевые столбцы таблиц зависели от первичного ключа в целом, но не от его части. В принципе, если таблица находится в первой нормальной форме и первичный ключ у нее состоит из одного столбца, то она автоматически находится и во второй нормальной форме.
Третья нормальная форма
Чтобы таблица находилась в третьей нормальной форме, необходимо, чтобы неключевые столбцы в ней не зависели от других неключевых столбцов, а зависели только от первичного ключа. Самая распространенная ошибка - это расчетные столбцы, значения которых можно получить путем каких-либо манипуляций с другими столбцами таблицы. Для приведения таблицы в третью нормальную форму такие столбцы из таблиц надо удалить.
Нормальная форма Бойса-Кодда
Нормальная форма Бойса-Кодда требует, чтобы в таблице был только один потенциальный первичный ключ. Чаще всего у таблиц, находящихся в третьей нормальной форме, так и бывает, но не всегда. Если обнаружился второй столбец (комбинация столбцов), позволяющий однозначно идентифицировать строку, то для приведения к нормальной форме Бойса-Кодда такие данные надо вынести в отдельную таблицу.
Четвертая нормальная форма
Для приведения таблицы, находящейся в нормальной форме Бойса-Кодда, к четвертой нормальной форме необходимо устранить имеющиеся в ней многозначные зависимости. То есть обеспечить, чтобы вставка / удаление любой строки таблицы не требовала бы вставки / удаления / модификации других строк этой же таблицы.
Пятая нормальная форма
Таблицу, находящуюся в четвертой нормальной форме и, казалось бы, уже нормализованную до предела, в некоторых случаях еще можно бывает разбить на три или более (но не на две!) таблиц, соединив которые, мы получим исходную таблицу. Получившиеся в результате такой, как правило, весьма искусственной, декомпозиции таблицы и называют находящимися в пятой нормальная форме. Формальное определение пятой нормальной формы таково: это форма, в которой устранены зависимости соединения. В большинстве случаев практической пользы от нормализации таблиц до пятой нормальной формы не наблюдается.
Разработаны специальные формальные математические методы нормализации таблиц реляционных баз данных. На практике же толковый проектировщик баз данных, детально познакомившись с предметной областью, как правило, достаточно быстро набросает структуру, в которой большинство таблиц находятся в четвертой нормальной форме).
Главное, чего мы добьемся, проведя нормализацию базы данных - это устранение (или, по крайней мере, серьезное сокращение) избыточности, дублирования данных. Как следствие, значительно сокращается вероятность появления противоречивых данных, облегчается администрирование базы и обновление информации в ней, сокращается объем дискового пространства.
Например, данные о сотрудниках мы разделили на две таблицы «Сотрудники» и «Дополнительные сведения». В таблицу «Сотрудники» занесены данные, которые потребуются при работе сотрудника с клиентом, а в таблице «Дополнительные сведения» хранятся данные, необходимые при приёме сотрудника на работу и не нужные при работе сотрудника с заказами.
При дальнейшем создании базы обратите особое внимание на распределение данных в таблицах, зависимость неключевых полей от первичного ключа и их независимость от других неключевых полей.