Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на теорию 46-60.doc
Скачиваний:
7
Добавлен:
23.08.2019
Размер:
1.12 Mб
Скачать

56. Нормализация реляционных баз данных. Нормальные формы 1нф, 2нф, 3нф.

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

Определение 1НФ. Отношение находится в первой 1НФ, если все его атрибуты атомарны, то есть если ни один из его атрибутов нельзя разделить на более простые атрибуты, которые соответствуют каким-то другим свойствам описываемой сущности.

Будем называть исходное отношение основным, а значение неатомарного атрибута — подчинённым. Для того, чтобы нормализовать исходное отношение, атрибуты которого неатомарны, необходимо объединить схемы основного и подчинённого отношений. Алгоритм нормализации отношения до 1НФ:

1. создать новое отношение, схема которого будет получена путём слияния основной и подчинённой схем исходного отношения в одну;

2. для каждого кортежа исходного отношения включить в новое столько строк, сколько кортежей содержится в подчинённом отношении этого кортежа;

3. заполнить значения атрибутов нового отношения, соответствующих атрибутам подчинённого отношения;

4. заполнить строки нового отношения значениями атомарных атрибутов исходного;

R1

Код

Статус

Город

Товар

Кол-во

1

20

Москва

1

300

1

20

Москва

2

200

1

20

Москва

3

400

1

20

Москва

4

200

1

20

Москва

5

100

1

20

Москва

6

100

2

10

Ростов

1

300

2

10

Ростов

2

400

3

10

Ростов

2

200

4

20

Москва

2

200

4

20

Москва

4

300

4

20

Москва

5

400

Недостатки 1НФ рассмотрим на примере отношения R1 со следующими ФЗ: {код, товар} -> {количество}; {код} -> {город}; {код} -> {статус}; {город} -> {статус}, первичный ключ в отношении {код, товар}.

Данное отношение обладает избыточностью (для каждого поставщика указан город и статус). Избыточность приводит к различным аномалиям:

1. аномалия вставки. Нельзя добавить информацию о поставщике, который не поставил ни одного товара;

2. аномалия удаления. Возможно, что с удалением некоторой строки таблица (удаление поставки) исчезнет информация о поставщике;

3. аномалия обновления. Проблема возникает в том случае, если необходимо переместить поставщика из одного города в другой. Например, 1 из Москвы в Новгород. Для этого необходимо откорректировать все записи о поставках от этого поставщика;

Для решения этой проблемы заменим отношение несколькими проекциями. В одно включим первичный ключ и все неключевые атрибуты, неприводимо зависимые от первичного ключа. В остальные проекции – неключевые атрибуты, приводимо зависимые от первичного ключа и та часть первичного ключа, от которой данные атрибуты неприводимо зависят. Итак получим 2 отношения R2 и R3:

R2

R3

Код

Товар

Кол-во

Код

Статус

Город

1

1

300

1

20

Москва

1

2

200

2

10

Ростов

1

3

400

3

10

Ростов

1

4

200

4

20

Москва

1

5

100

5

30

Новгород

1

6

100

2

1

300

2

2

400

3

2

200

4

2

200

4

4

300

4

5

400

ФЗ для отношения R2: {код, товар} -> {кол-во}.

ФЗ для отношения R3: {код} -> {город}, {код} -> {статус}, {город} -> {статус}.

Такие отношения позволяют преодолеть указанные противоречия:

1. можно добавить поставщика из Новгорода, который не поставлял товар;

2. можно удалить товар с кодом 2 от поставщика с кодом 3, а сведения о поставщике останутся;

3. для того, чтобы переместить поставщика 1 из Москвы в Новгород, достаточно поменять запись в отношении R3.

Физический смысл противоречий в отношении R1 в том, что это отношение описывает не один объект (поставку товара) а два: поставку и поставщика.

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

Проблемы, возникающие в R3:

1. аномалия вставки. Нельзя включить город с некоторым статусом из которого нет ни одного поставщика;

2. аномалия удаления. Удалив поставщика 5, удалим информацию о том, что Новгороду был установлен статус 30;

3. аномалия обновления. Информация о статусе повторяется, т.о. изменив статус Москвы с 20 на 30 необходимо откорректировать несколько записей.

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

Формальным признаком не принадлежности R3 к 3НФ является наличие транзитивной ФЗ для этого отношения неприводимое множество ФЗ: {код} → {город} и {город} → {статус}.

R5:

R6:

Код

Город

Город

Статус

1

Москва

Москва

20

2

Ростов

Ростов

10

3

Ростов

Новгород

30

4

Москва

Казань

40

5

Новгород

Для решения проблемы найдем об R3 проекции, в которые включим первичный ключ и атрибут, перед которым осуществляется транзитивная зависимость и во втором отношении этот же атрибут и атрибут, транзитивно зависящий от первичного ключа исходного отношения. Получим отношения R5 и R6. ФЗ для отношения R5: {код} -> {статус}. ФЗ для отношения R6: {город}→ {статус}.

Каждое отношение описывает только одну сущность (объект предметной области).

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