Загрузка...

Лекции по БД, часть 3. I,II,III нормальные формы.


Отношение нах-ся в 3нф тогда и только тогда когда не ключевые ат-ты явл взаимно независимыми 2. Неприводимо зависи-ми от пер-го ключа. Два или несколько ат-ов назыв. взаимно независимыми если не один из них не зависит фун-но от кокой- либо комбинации др-х ат-ов. Каждый такой ат-т может быть обновлен незав-мо от остальных. Не-ключивой ат-т – который не задействован пер-м ключом рассматри-го отношения.
Приведенное определение 3 нф может быть интерпретировано :
Отношения находятся в 3нф тогда и только тогда, когда каждый кор-теж состоит из значения первичного ключа, который идентиф-т некую сущность из набора пустых значений или значений взаимно незав-х ат-ов некотором образом описыва-х эту сущность.
Дадим определение 1нф : отношение нах-ся в 1нф когда все исполь-зуемые домены используют только скалярные значения. В этом опре-делении всего лишь утв-ся что любое нормализованное отношение на-ходится в 1нф и обладает стр-ой по некоторым причинам не совсем желательным. Допустим инф-ия о поставщиках и поставках содержит-ся не в двух отношениях а в одном.
FIRST (S#,STATUS; CITY, P# QTY)
PRIMARY KEY (S#,P#)
Здесь введено доп ограничение CITY?STATUS приведем диаграмму этого отношения.

Определим саму таблицу:
S# Status City P# Qty
S1 20 London P1 300
S1 20 London P2 200
S1 20 London P3 400
S1 20 London P4 200
S1 20 London P5 100
S1 20 London P6 100
S2 10 Paris P1 300
S2 10 Paris P2 400
S3 10 Paris P2 200
S4 20 London P2 200
S4 20 London P4 300
S4 20 London P5 400
Избыточность в отношении FIRST приводим к различным аналогиям обновления.
INSERT
Нельзя вставить данные о том что некоторый поставщик находится в некотором городе не указывая хотя бы один товар поставляемый этим поставщиком.
DELETE
Если удалить только один кортеж для некоторого поставщика то при этом будет удалена информация о поставке товара поставленного + что этот поставщик находится в некотором городе.
UPDATE
Название города для определенного поставщика повторяется в отно-шении мн-во раз что приводит к возникновению проблем при обнов-лении. Для решения проблемы необходимо заменить отношение first двумя следующими.
Second{S#,Status,City}
SP{S#,P#,QTY}

Second SP
S# Status City
S1 10 London
S2 10 Paris
S3 10 Paris
S4 20 London
S5 30 Athens

Insert в отношение second можно включить инф-ию о том что постав-щик находится в athens даже если он не поставляет никаких товаров.
Delete теперь можно исключить инф-ию о поставке в которой соеди-нены сведения о поставщике S3 и товаре Р2 удаляя соотв кортеж из отношения sp (при этом инф-я о том что s3 находится в Paris не утра-чивается).
Update в переработанной структуре название города для каждого по-ставщика появляется всего один раз поскольку сущ. только один кор-теж для данного поставщика в отношении second.
Теперь определим 2нф при условии что сущ только один потенциаль-ный ключ который является первичным ключом. Отношение находит-ся в 2нф когда оно находится в 1нф и каждый не ключевой атр-т не-приводимо зависит от первичного ключа
Оба отношения second и Sp находятся в 2нф с первичными ключами s# и {S#,p#} соответственно а отношение first не находится в ней. Всякое отношение которое находится в 1нф и не находится в 2нф всегда мож-но свести к эквивалентному набору отношений находящихся в 2нф. Этот процесс заключен в замене отношения в 1нф подходящим набо-ром проекций эквивалентных исходному отношению в том смысле что его можно восстанавливать с помощью обратного соединения этих проекций.
Однако структура отнош-я second – sp всё ещё может вызвать некото-рые проблемы. Здесь не ключевые атрибуты в отнош не явл взаимоне-зависимыми. Так зависимость атр-та status от атрибута S# хотя и явл-ся функц-й и действительно неприводимой она также транзитивна: S#?CITY?STATUS (и => S#?STATUS).
Транзитивные зависимости могут привести к перечисленным далее аномалиям обновления:

Загрузка...