Практическая работа №2 Тема «Приведение отношений к 1НФ, 2НФ, 3НФ»
Автор: drug | Категория: Прочее | Просмотров: | Комментирии: 0 | 03-11-2013 11:03

 

СКАЧАТЬ:  prakticheskaya-rabota-2.zip [152,24 Kb] (cкачиваний: 163)

 

 

Практическая работа №2

Тема «Приведение отношений к 1НФ, 2НФ, 3НФ»

Цель работы: изучение нормальных форм и процесса приведения отношений ко второй и третьей нормальным формам

Содержание отчета: 1) номер работы, тема цель работы; 2) приведение к 2НФ; 3) приведение к 3НФ; 4) схема БД (со всеми атрибутами).

Вторая нормальная форма (2НФ)

Понятие второй нормальной формы основано на понятии первичного ключа таблицы. Как известно, любая реляционная таблица базы данных хранит в себе информацию об объектах предметной области. Каждая запись такой таблицы представляет собой набор значений полей – свойств и признаков реальных объектов. Все объекты имеют какие-то уникальные признаки, по которым можно отличить один объект от другого, т.е. идентифицировать его. Совокупность этих отличительных признаков и является первичным ключом объекта.

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

При определении первичного ключа таблицы необходимо, прежде всего, исходить из смысла таблицы и содержащейся в ней информации. Выбор первичного ключа производится с использованием выявленных ранее функциональных зависимостей. При этом определяется набор из одного или более атрибутов, от которых зависят все остальные атрибуты. Зависимые атрибуты называются неключевыми, все другие атрибуты – ключевыми.

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

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

Структура таблицы «Поступление товаров» в 1НФ выглядит следующим образом:

 

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

1. Определим первичный ключ таблицы

Как видно из структуры таблицы, ни одно из полей само по себе не может являться альтернативным ключом, т.к. в каждом из них возможны повторы. Следовательно, альтернативные ключи необходимо составлять из комбинаций значений полей.

Первичным ключом таблицы является пара полей («Номер накладной», «Товар»).

2. В соответствии с определением 2НФ попытаемся установить, существуют ли в рассматриваемой таблице поля:

- не зависящие от ключа;

- зависящие от части ключа (от значения одного или нескольких, но не всех полей ключа).

2.1. Найдем поля, значения которых не зависят от ключа («Номер накладной», «Товар»).

Значения полей «Город», «Улица», «Дом», «Корпус», не зависят от комбинации значений полей («Номер накладной», «Товар»). Это означает, что значения этих полей являются избыточными для данной таблицы. Явная избыточность приводит к неоднократному повтору одной и той же информации в рамках таблицы.

2.2. Найдем поля, значения которых зависят от части ключа («Номер накладной», «Товар»).

Значения полей «Дата поступления», «Поставщик» зависят от значения поля «Номер накладной», являющегося частью первичного ключа. Зависимость полей от части ключа также приводит к неоднократному повтору информации в этих полях для разных записей таблицы – неявная избыточность.

Учитывая 2.1 и 2.2 таблица. «Поступление товара» не удовлетворяет требованиям 2НФ.

 

Где: 1 – Ключевые поля; 2 – Поля, не полностью зависящие от ключа; 3 – Поля, независящие от ключа; 4 – Поля, полностью зависящие от ключа.

3. Устранение частичных функциональных зависимостей

3.1. Выносим из таблицы «Поступление товара» поля, значения которых не зависят от значения первичного составного ключа.

Получим таблицу «Поставщики»

Первичным ключом таблицы является поле «Поставщик». Полученная таблица «Поставщики» находится во второй нормальной форме (2НФ), т.к. все значения полей атомарны (требование 1НФ) и все неключевые атрибуты функционально полно зависят от значения ключа – значения поля «Поставщик» (требование 2НФ).

Исходная таблица «Поступление товара», после выноса полей будет выглядеть следующим образом:

 

3.2. Выносим из таблицы «Поступление товара» поля, значение которых зависит от части ключа, т.е. либо от поля «Номер накладной», либо от поля «Товар».

Таких полей в таблице два: «Дата поступления» и «Поставщик», они функционально зависят от поля «Номер накладной», который является частью первичного ключа. Построим проекцию на эти атрибуты и получим таблицу, которую назовем «Накладные». Полученная таблица фактически содержит информацию о произведенной хозяйственной операции – поступлении товаров на склад.

Первичным ключом таблицы является поле «Номер накладной». Полученная таблица «Накладные» находится во второй нормальной форме (2НФ), т.к. все значения полей атомарны (требование 1НФ) и все неключевые атрибуты функционально полно зависят значения ключа – значения поля «Номер накладной» (требование 2НФ).

Исходная таблица «Поступление товара», после выноса полей будет выглядеть следующим образом:

 

Содержание полученной таблице уже не будет полностью соответствовать названию таблицы: фактически в таблице содержится информация о составе указанных в документе накладная товарах. Таким образом полученную таблицу необходимо назвать «Состав накладной»

В результате проделанных шагов исходная таблица «Поступление товара» была разбита на три таблицы: «Поставщики», «Накладные» и «Состав накладной».

 

Полученные таблицы находятся в 2НФ кроме таблицы «Состав накладной». В этой таблице имеется зависимость между значением поля «Товар» и значением поля «Ед. изм» (единица измерения).

Следовательно значение поля «Ед.изм», будет зависеть только от части ключа – от поля «Товар», что противоречит условию 2НФ.

1 – Ключевые поля; 2 – Поля, не полностью зависящие от ключа; 3 – Поля, полностью зависящие от ключа

Приведем таблицу «Состав накладной» к 2НФ:

Выполним проекцию на атрибуты «Товар» → «Ед.изм.», получим таблицу «Товары». Ключом в данной таблице является поле «Товар».

Таблица «Состав накладной» теперь выглядеть так:

 

Таким образом, в результате приведения таблицы «Поступление товара» ко второй нормальной форме мы получили четыре таблицы («Поставщики», «Накладные», «Состав накладной», «Товары»). Порядок получения показан на следующей схеме:

 

4 Третья нормальная форма (3НФ)

Таблица находится в 3НФ, если она удовлетворяет требованиям 2НФ и ни одно из ее неключевых полей функционально не зависит от любого другого неключевого поля.

Рассмотрим процесс приведения к третей нормальной форме на примере полученной ранее таблицы «Состав накладной». Таблица «Состав накладной» после приведения ко второй нормальной форме выглядит следующим образом:

 

В данной таблице имеются две зависимости между неключевыми полями таблицы: Количество → Сумма и Цена → Сумма.

Для устранения этой зависимости согласно правилу необходимо разбить таблицу на две и более, однако в данном случае этого не требуется, поле «Сумма» является арифметически вычисляемым из значений полей «Количество» и «Цена»: Количество * Цена = Сумма.

В связи с этим поле «Сумма» можно вообще исключить из таблицы базы данных как избыточное, с точки зрения хранимой в таблице базы данных информации.

Исключив информационно-избыточное поле «Сумма», получим таблицу «Состав накладной» в третьей нормальной форме. Таблицы Товары, Накладные, Поставщики удовлетворяют требованиям 3НФ.

 

Сочинения курсовыеСочинения курсовые