Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_Лекция 1_Метод нормализации.docx
Скачиваний:
7
Добавлен:
19.11.2019
Размер:
593.3 Кб
Скачать

, Причем

Пример. Рассмотрим отношение ClientRental. Отношение находится в 1NF.

Первая нормальная форма (1NF) отношения ClientRental

Здесь первичным ключом являются атрибуты {clientNo, propertyNo}.

Удовлетворяет ли отношение требованиям формы 2NF

  1. Функциональная зависимость clientNo, propertyNo  cName не является полной, поскольку существует функциональная зависимость clientNo  cName.

  2. Кроме того, поскольку атрибуты объекта недвижимости pAddress, rent, ownerNo, oName функционально зависят от атрибута propertyNo, функциональная зависимость

clientNo, propertyNo  pAddress, rent, ownerNo, oName

также не является полной.

Таким образом, отношение ClientRental не удовлетворяет требованиям формы 2NF.

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

Для преобразования отношения ClientRental в форму 2NF декомпозицию исходного отношения можно выполнить в два этапа:

1-й этап. Пусть

L1={clientNo, cName},

L2={clientNo, propertyNo, pAddress, rentstart, rentFinish, rent, ownerNo, oName}

Выполним декомпозицию:

,

Осталось выполнить декомпозицию второго отношения R2:

2-й этап. Пусть

L1={propertyNo, pAddress, rent, ownerNo, oName },

L2={clientNo, propertyNo, rentstart, rentFinish}

Выполним декомпозицию:

,

Полученные три отношения имеют следующий вид (цветом выделены первичные ключи):

Client (clientNo, cName)

Rental (clientNo, propertyNo, rentstart, rentFinish)

PropertyOwner (propertyNo, pAddress, rent, ownerNo, oName)

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

Вторая нормальная форма (2NF) отношения Client

Вторая нормальная форма (2NF) отношения Rental

Вторая нормальная форма (2NF) отношения PropertyOwner

Упражнение 2.

Построить «свой» пример отношения в форме 1NF, в котором имеются две зависимости неключевых атрибутов от первичного ключа, нарушающие требования формы 2NF. Выполнить декомпозицию отношения и получить новые отношения, удовлетворяющие требованиям формы 2NF.

В отношении должно быть 8-10 атрибутов и не менее 8 кортежей.

5. 3-я нормальная форма

Определение (транзитивной зависимости). Пусть x, y и z – атрибуты отношения R. И существуют функциональные зависимости x  y и y  z. Тогда существует функциональная зависимость x  z, которая называется транзитивной в том случае, если не существует обратных функциональных зависимостей y  x и z  x.

Отношение «СотрудникиОтделения»

Например, в отношении «СотрудникиОтделения» существуют функциональные зависимости staffNo  branchNo и branchNo  bAddress. Зависимость staffNobAddress является транзитивной, поскольку не существует обратных зависимостей

staffNo  branchNo и staffNo  bAddress

Вопрос: приведите другой пример транзитивной зависимости в этом отношении.

sName  salary, salary  position  sName  position (транзитивная)

staffNo  salary, salary  position  staffNo  position (транзитивная)

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

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

Схема приведения отношения к 3NF

Пусть задано отношение R(x1, x2, y1, y2, y3) и x={x1, x2} – первичный ключ, т.е. существуют функциональные зависимости x  y1, x  y2, x  y3.

Пусть в отношении отсутствуют повторяющиеся группы атрибутов и, следовательно, отношение R находится в 1NF.

Пусть все зависимости x  y1, x  y2, x  y3 являются полными функциональными зависимостями и, следовательно, отношение R находится в 2NF.

Пусть одна из этих зависимостей является транзитивной. Например, зависимости x  y1, x y2 транзитивными не являются. А зависимость x  y3 является транзитивной, т.е. имеется, например, зависимость y2  y3 и не существует обратной y2  y3.

Устраним из отношения R зависимость y2  y3, нарушающую требование 3NF, выполнив декомпозицию исходного отношения на следующие два отношения.

Пусть L1={ x1, x2, y1, y2}, L2={y2, y3}

, причем

Оба полученных отношения будут удовлетворять требованиям 3NF.

Пример. Рассмотрим отношение PropertyOwner.

Отношение PropertyOwner

Первичным ключом отношения является атрибут propertyNo. Все не входящие в первичный ключ атрибуты отношения PropertyOwner функционально зависят от первичного ключа. Первичный ключ не является составным, поэтому эти зависимости являются полными функциональными зависимостями. И отношение находится в 2NF.

Атрибут oName зависит также и от атрибута ownerNo. Обратных зависимостей

propertyNo  ownerNo и propertyNo  oName

не существует, поэтому зависимость propertyNo  oName является транзитивной.

Для преобразования отношения PropertyOwner в третью нормальную форму необходимо прежде всего удалить упомянутую выше транзитивную зависимость путем создания двух новых отношений PropertyForRent и Owner:

PropertyForRent (propertyNo, pAddress, rent, ownerNo)

Owner(ownerNo, oName)

Отношение PropertyForRent

Отношение Owner

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