- •Лабораторная работа №2 реляционные базы данных Введение
- •Отношение один-к-одному
- •Отношение много-к-одному
- •Нормализизация баз данных
- •Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •2. Проектирование баз данных в microsoft access 2007 Объекты базы данных Access
- •Создание базы данных
- •Создание связей между таблицами
- •Запросы
- •Контрольные вопросы
Нормализизация баз данных
Задание 1: необходимо привести свою базу данных к 3 НФ и отобразить полученную схему в Access
При проектировании реляционной базы данных необходимо решить вопрос о наиболее эффективной структуре данных.
Основные цели проектирования:
-обеспечить быстрый доступ к данным таблицы;
-исключить ненужное повторение данных, которое является причиной ошибок при вводе и нерационального использования дискового пространства вашего компьютера;
-обеспечить целостность данных таким образом, чтобы при изменении одних объектов автоматически происходило соответствующее изменение связанных с ними объектов.
Процесс уменьшения избыточности информации в базе данных называется нормализацией. В теории нормализации базы данных разработаны достаточно формализованные подходы к разбиению данных, обладающих сложной структурой на несколько таблиц.
Теория нормализации структуры оперирует пятью нормальными формами таблиц. Каждая следующая нормальная форма должна удовлетворять требованиям предыдущей формы и некоторым дополнительным условиям. Ограничимся рассмотрением первых трех нормальных форм, поскольку при практическом проектировании баз данных четвертая и пятая формы используются в редких случаях. В качестве примера рассмотрим таблицу Продажи (табл.7).
Таблицу Продажи можно рассматривать как однотабличную базу данных. Основная проблема заключается в том, что в ней содержится значительное количество повторяющейся информации. Например, сведения о покупателе повторяются для каждого сделанного им заказа. Такая структура данных является причиной следующих проблем, возникающих при работе с базой данных: значительные затраты времени на ввод повторяющихся данных.
Например, для всех заказов, сделанных одним из покупателей, придется каждый раз вводить одни и те же данные о покупателе; при изменении адреса или телефона покупателя необходимо корректировать все записи, содержащие сведения о заказах этого покупателя; наличие повторяющейся информации приведет к неоправданному увеличению размера базы данных. В результате снизится скорость выполнения запросов. Кроме того, повторяющиеся данные нерационально используют дисковое пространство вашего компьютера; любые внештатные ситуации потребуют значительного времени для получения требуемой информации. Например, при больших размерах таблиц поиск ошибок будет занимать значительное время.
Первая нормальная форма
Табл. 7 является ненормализованной таблицей. Требования к таблице в первой нормальной форме:
1. Таблица не должна иметь повторяющихся групп полей;
2. В таблице должны отсутствовать повторяющиеся записи;
3. Все поля должны быть простыми.
Для выполнения условия пункта 2 каждая таблица должна иметь первичный ключ. Таблица Продажи (табл. 7) не содержит первичного ключа, что допускает наличие в ней повторяющихся записей. Для выполнения условия 2 добавим поле Код клиента, которое будет содержать значение первичного ключа. Требование 1 постулирует устранение повторяющихся групп полей. Поскольку каждый покупатель может сделать несколько заказов, каждый из которых в свою очередь может содержать несколько товаров, то необходимы две таблицы. Каждая запись одной таблицы будет содержать сведения об одном из покупателей, а второй таблицы – информацию о каждом заказе. Поэтому надо разбить таблицу Продажи на две отдельные таблицы Клиенты и Заказы и определить поля Код клиента в качестве ключей связи. Структуры таблиц Клиенты и Заказы приведены на рис.1. Тип связи между таблицами Клиенты и Заказы будет один-ко-многим. Таким образом, для таблицы Клиенты решена проблема повторяющихся групп полей.
Рис.1. Первая нормальная форма
Таблица Заказы содержит сведения о товарах, включенных в конкретный заказ. Для исключения повторяющихся записей можно воспользоваться одним из способов:
1) добавить в таблицу новое уникальное ключевое поле Код заказа, что позволит однозначно идентифицировать каждый из заказов.
2) использовать уникальный составной ключ, состоящий из полей Код клиента, Код товара и Дата заказа.
После того как мы разделили повторяющиеся записи и определили ключевые поля в каждой таблице, таблицы Клиенты и Заказы находятся в первой нормальной форме (рис.1).
3 Условие подразумевает, что нельзя в одно поле вбивать, например, две фамилии или две даты продажи.
Структура связей между таблицами называется схемой данных.