Нормализация Базы Данных - Разработка информационной системы "Магазин компьютерных товаров"

Результатом работы с АИС магазина компьютерных товаров является чек, который оформляет продавец. В этом чеке должна содержаться информация о количестве товаров в чеке, количестве каждого товара, стоимости товара, сумме покупки, скидке по товару, сумме покупки со скидкой. Если речь идет о сети магазинов, то необходимо указать еще и информацию о магазине (название, адрес), в котором данный чек был оформлен. А т. к. заработная плата продавцов зависит от их личных продаж, то в чеке необходимо указать и данные продавца, который оформил данный чек. Исходя из этого инфологическая модель базы данных будет выглядеть следующим образом:

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

В результате нрмализации обеспечивается:

    - регулярность описаний данных; - возможность присоединения новых полей, записей, связей без изменения существующих подсхем (или внешних моделей) и, соответственно, ПП. это обычно требует больших дополнительных затрат по сопровождению; - максимальная гибкость при обработке произвольных запросов с рабочих мест пользователей.

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

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

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

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

1 избыточность данных; 2 аномалии обновления; 3 аномалии удаления; 4 аномалии ввода;

Можно легко представить себе пример ненормализованной таблицы, с которой будет очень неудобно работать:

Таблица 1 - Пример ненормализованной таблицы

Чек

Магазин

Дата покупки

Время покупки

Продавец

Товар

Цена товара

Количество товара

Сумма покупки

Скидка %

Вид оплаты

Маг. 1

01.01.01

13:12

Иванов

ПК

25000

1

25000

5

Нал

Маг. 1

01.01.01

13:12

Иванов

Мышь

1000

1

1000

5

Нал

Маг. 1

01.01.01

13:12

Иванов

Колонки

2500

1

2500

5

Нал

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

Первая нормальная форма (1NF).

Первая нормальная форма - это основа реляционной системы. Для соответствия этой форме требуется чтобы таблица был двумерной и не содержала ячеек, включающих несколько значений (значения должны быть атомарными). Для того чтобы привести таблицу к 1NFнам необходимо исключить дублирование строк. Электронные таблицы часто включают третье измерение, но в таблицах баз данных оно использоваться не должно. Рассмотреть эту проблему можно также с помощью отношения "один ко многим", тогда совет можно сформулировать следующим образом: не включайте в одну таблицу элементы, представляющие обе стороны данного отношения. Вместо этого создайте другие таблицы в первой нормальной форме, устранив повторяющиеся группы.

Таким образом таблицы "Магазины", "Продавцы", "Товары", "Скидки", "Позиции в чеке", "Категории товаров", "Чек" в 1NF, будут выглядеть следующим образом:

Таблица 3 - 1NF "Магазины"

Магазины

Код

Название

Адрес

1

"Кибертрон"

Ул. Центральная 1

2

"Кибертрон мини"

Ул. Южная 5

3

"Кибертрон сервис"

Ул. Северная 13

Таблица 4 - 1NF "Продавцы"

Продавцы

Код

Фамилия

Имя

Отчество

1

Иванов

Петр

Сергеевич

2

Сидорова

Елена

Александровна

3

Василенко

Артем

Михайлович

Таблица 5 - 1NF "Товары"

Товары

Код

Наименование

Код категории

Цена за единицу

Остаток на складе

1

ASUS ER8596

1

15000

15

2

Defender 85

2

1000

41

3

GeForce k560

3

26000

9

Таблица 6 - 1NF "Скидки"

Скидки

Код

Вид скидки

Размер скидки %

1

Карта клиента

7

2

Сезонная акция

5

Таблица 7 - 1NF "Категории товаров"

Категории товаров

Код

Название

1

Материнские платы

2

Клавиатуры

Таблица 8 - 1NF "Позиции в чеке"

Позиции в чеке

Код

Код чека

Код товара

Количество купленного товара

1

1

1

1

2

1

2

3

Таблица 9 - 1NF "Чек"

Чек

Код

Код магазина

Дата покупки

Время покупки

Код продавца

Сумма покупки

Код скидки

Сумма покупки со скидкой

1

1

19.03.2016

11:35

1

2

2

1

19.03.2016

11:35

3

1

Теперь все таблицы базы данных соответствуют первой нормальной форме.

Вторая нормальная форма (2NF): устранение избыточных данных

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

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

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

От Части составного потенциального ключа.

Вторая нормальная форма по определению запрещает наличие не ключевых

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

. Процесс приведения к 2NF позволяет избавиться от большей части повторяющихся данных.

При приведении базы данных к 2 NF таблицы преобразовались:

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

Рисунок 2 - показывает, что все таблицы соответствуют второй нормальной форме. Следовательно, можно приступить к формированию третьей нормальной формы.

Третья нормальная форма (3NF)

В 3NF необходимо исключить транзитивную зависимость между полями. Чтобы перейти к 3NF необходимо выполнить следующие действия:

    1) Определить все поля, от которых зависят другие поля. 2) Создать новую таблицу для каждого такого поля или группы полей и группы зависящих от него полей переместить в другую таблицу. 3) Удалить перемещенные поля из исходной таблицы.

В результате нормализации все таблицы базы данных соответствуют третьей нормальной форме. Следовательно, можно приступать непосредственно к формированию базы данных. Логическая схема АИС "Магазин компьютерных товаров" будет выглядеть следующим образом

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

Похожие статьи




Нормализация Базы Данных - Разработка информационной системы "Магазин компьютерных товаров"

Предыдущая | Следующая