Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Teor_BD_Lek.doc
Скачиваний:
2
Добавлен:
01.01.2020
Размер:
1.54 Mб
Скачать

Поставщик1 поставки

П#

Имя поставщика

Город

Тариф

П1

П2

П3

Восход

Заря

Салют

Тула

Самара

Тула

10

15

10

П#

И#

Кол

П1

П1

П1

П2

П2

П3

И1

И2

И3

И1

И2

И4

300

200

200

200

500

80


Третья нормальная форма

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

Рассмотрим зависимости между атрибутами отношения ПОСТАВЩИК1.

К аждый из не ключевых атрибутов полностью зависит от первичного ключа П#, но в то же время атрибут Тариф функционально полно зависит только от атрибута Город. Эти атрибуты могут существовать вне зависимости от первичного ключа. Следовательно, это отношение находится не в 3НФ.

В таком отношении также могут возникнуть аномалии включения-удаления. Если потребуется включить в таблицу сведения о новом городе и стоимости перевозок из него, то мы не сможем этого сделать до тех пор, пока в этом городе не появится новый поставщик и не получит свой статус поставщика. До тех пор ему не присвоен код П#, т.е. П# =0 и кортеж, содержащий сведения об этом городе не будет иметь первичного ключа (аномалия включения). Если же предприятие Заря перестанет поставлять нам изделия и потеряет статус поставщика и код П#, то из таблицы ПОСТАВЩИК1 придется исключить все сведения о нем, в том числе и те, которые мы хотели бы сохранить, например, стоимость доставки из Самары (аномалия удаления).

Для приведения отношения к 3НФ необходимо выделить в отдельную таблицу не ключевые атрибуты, функционально полно зависящие друг от друга. Таблицу ПОСТАВЩИК1 разделим на две таблицы: ПОСТАВЩИК и ДОСТАВКА.

ПОСТАВЩИК ДОСТАВКА

П#

Имя постащика

Город

П1

П2

П3

Восход

Заря

Салют

Тула

Самара

Тула

Город

Тариф

Тула

Самара

10

15


Теперь эти отношения находятся в 3НФ и в БД можно включать сведения о новых городах и тарифах даже в том случае, когда из этих городов пока не делается никаких поставок. Между полученными отношениями существует связь типа 1:М (на стороне 1 находится отношение ДОСТАВКА). Связь осуществляется через атрибут Город.

Таким образом, исходная таблица ПОСТАВКИ2 разделилась на три таблицы: ПОСТАВЩИК, ДОСТАВКА, ПОСТАВКИ. Каждая из таблиц находится в 3НФ. Эти таблицы можно рассматривать в качестве модели данных реляционной БД.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]