Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Лекции по информатике / ЛЕКЦИЯ09-10_Базы_данных.DOC
Скачиваний:
256
Добавлен:
27.06.2014
Размер:
253.44 Кб
Скачать

Обучение

Дисциплина

Преподаватель

Учебник

Информатика

Шипилов П.А.

Форсайт Р. Паскаль для всех

Информатика

Шипилов П.А.

Уэйт М. и др. Язык Си

Информатика

Голованевский Г.Л.

Форсайт Р. Паскаль для всех

Информатика

Голованевский Г.Л.

Уэйт М. и др. Язык Си

...

...

...

Рис. 4. К иллюстрации многозначных зависимостей

Есть и другая многозначная зависимость "Дисциплина-Учебник": при изучении Информатики используются учебники "Паскаль для всех" и "Язык Си". При этом Преподаватель и Учебник не связаны функциональной зависимостью, что приводит к появлению избыточности (для добавления еще одного учебника придется ввести в таблицу две новых строки). Дело улучшается при замене этой таблицы на две: (Дисциплина_Преподаватель и Дисциплина_Учебник).

    1. Нормальные формы

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

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

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

Для того чтобы таблица считалась нормализованной к первой нормальной форме, каждое из ее полей должно быть неделимым (атомарным) и таблица не должна содержать никаких повторяющихся групп полей.

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

Повторяющаяся группа— это поле, которое повторяется внутри определения записи с целью хранения нескольких значений для атрибута. Мы могли бы, например, применить этот подход в БД «Питание» при проектировании таблицы «Состав блюда», запоминая в ней для каждого блюда состав, например, из 10 продуктов и в полях Пр1, Пр2, …, Пр10, а их вес в полях Вес1, Вес2, …, Вес10. Эти поля-близнецы и будут составлять повторяющуюся группу.

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