Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 6_8.doc
Скачиваний:
7
Добавлен:
19.08.2019
Размер:
159.23 Кб
Скачать

6.2. Нормализация бд. Денормализация бд.

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

- Целостность данных (данные сохраняют корректность и достоверность, поскольку в результате нормализации они будут сохраняться только в одном месте).

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

- Снижение требований к объему памяти (Следствием этого является повышение скорости поиска данных).

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

Область

Код

Население

Город

Кол-во пред-щее

Кол-во текущее

Относит. прирост

Носибирская область

НО

10млн.

Новосибирск

1100

1200

9%

Куйбышев

500

550

10%

Барабинск

300

270

-9%

Омская область

ОО

4млн.

Омск

400

420

5%

Калачинск

200

210

5%

Алтайс.край

АК

5млн.

Барнаул

800

860

8%

Эта таблица не нормализована, т.к. ряд атрибутов не определен к какой области относится.

1НФ. Сущность находиться в 1НФ, если значения всех её атрибутов однозначно определены. Все повторяющиеся группы должны быть удалены в новую связанную сущность. Все неопределенные группы должны быть доопределены.

Область

Код

Насел-ие

Город

Кол-тво пред-ее

Кол-тво текущее

Относит. прирост

Носиб. Обл.

НО

10млн.

Новосибирск

1100

1200

9%

Носиб. Обл.

НО

10млн.

Куйбышев

500

550

10%

Носиб. Обл.

НО

10млн.

Барабинск

300

270

-9%

Омская обл.

ОО

4млн.

Омск

400

420

5%

Омская обл.

ОО

4млн.

Калачинск

200

210

5%

Алтайс.край

АК

5млн.

Барнаул

800

860

8%

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

Область

Код

Население

 

 

Город

Колво предее

Кол-тво текущее

Относ. прирост

Носиб. Обл.

НО

10млн.

 

 

Новосиб-ск

1100

1200

9%

Омская обл.

ОО

4млн.

 

 

Куйбышев

500

550

10%

Алтайс.край

АК

5млн.

 

 

Барабинск

300

270

9%

 

 

 

 

 

Омск

400

420

5%

 

 

 

 

 

Калачинск

200

210

5%

 

 

 

 

 

Барнаул

800

860

8%

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

После 3НФ идет НФ Бойса Кодда. Это отсутствие инверсионной частичной зависимости. В ней ни первичный ключ, ни какая-либо его часть не должны зависеть от неключевого атрибута. После НФБК идет 4НФ и 5НФ, они используются редко для разработки сложных больших БД.

Денормализация. Означает понижение уровня нормализации таблиц в условиях увеличения производительности таблиц. Нужно стараться не прибегать к денормализации без всяких причин, может не хватить дискового пространства. Кроме, денормализации существуют и др. пути повышения производительности. Например, индексы и модульная структура программы. Различают 2 типа денормализации: нисходящую и восходящую.

Нисходящая предполагает перенос атрибутов из родительской сущности в дочернюю.

До нормализации

 

После нормализации

 Клиент

 

 Клиент

Идентификатор

 

Идентификатор

Адрес

 

Адрес

Имя ┘

 

Имя ┘

 

 

 

Заказ

 

Заказ

╧заказа

 

╧заказа

дата заказа

 

дата заказа

дата изготовл.

 

дата изготовл.

 

 

имя клиента

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

Восходящая - это перенос атрибута из дочерней сущности в родительскую.

До нормализации

После норм-ии

Заказ

 

Заказ

╧заказа

 

╧заказа

дата заказа

 

дата заказа

дата изгот-я ┘

 

дата изгот-я

 

 

 

цена заказа

 

Статья

заказа

Статья заказа

╧заказа

╧заказа

╧статьи

╧статьи

цена статьи

цена статьи

В случае, если в дочерней таблице статья заказа будет добавлена новая строка, то в таблице Заказ цена заказа увеличится на величину цену статьи.