
Приведение ненормализованной формы к 1nf
Существуют два способа исключения повторяющихся групп из ненормализованных таблиц.
1-й способ приведения ННФ к 1NF:
Повторяющиеся группы устраняются путем ввода соответствующих данных в пустые столбцы строк с повторяющимися данными. Иначе говоря, пустые места при этом заполняются дубликатами неповторяющихся данных. Полученная в результате этих действий таблица, которая теперь будет называться отношением, содержит элементарные (или единственные) значения на пересечении каждой строки с каждым столбцом и, поэтому находится в первой нормальной форме.
В примере повторяющаяся группа (сведения об объекте недвижимости) устраняется с помощью ввода в каждую строку с описанием объекта недвижимости соответствующих сведений о клиенте (первичного ключа и имени клиента: clientNo и cName).
Первая нормальная форма (1NF) отношения ClientRental |
|
Вопрос: какие атрибуты можно выбрать в качестве первичного ключа?
В качестве первичного ключа этого отношения выберем группу (clientNo, propertyNo).
2-й способ приведения ННФ к 1NF:
При втором способе один атрибут или группа атрибутов назначаются ключом ненормализованной таблицы, а затем повторяющиеся группы изымаются, и помещаются в отдельные отношения вместе с копиями ключа исходной таблицы. Далее в новых отношениях устанавливаются свои первичные ключи.
В примере повторяющаяся группа (сведения об арендованных объектах недвижимости) удаляется из данного отношения, и помещается в другое отношение вместе с копией исходного ключевого атрибута (clientNo).
Первая нормальная форма (1NF) отношения PropertyRentalOwner (арендуемые объекты недвижимости и собственники) |
|
В качестве первичного ключа этого отношения выбирается группа (clientNo, propertyNo).
Остаток исходного отношения (сведения о клиентах) представлен в следующей таблице.
Первая нормальная форма (1NF) отношения Client |
|
Здесь в качестве первичного ключа выбирается атрибут clientNo.
Полученные отношения Client и PropertyRentalOwner связаны ограничением внешнего ключа. Атрибут PropertyRentalOwner(clientNo) играет роль внешнего ключа, содержит ссылку на атрибут первичного ключа Client(clientNo).
Вопрос:
Каким будет результат операции
4. 2-я нормальная форма
Определение (полной функциональной зависимости). Пусть x и y – атрибуты отношения R. Функциональная зависимость xy называется полной, если атрибут y функционально не зависит от любого собственного подмножества атрибута x.
Например, функциональная зависимость staffNo, sName branchNo не является полной, т.к. существует функциональная зависимость staffNo branchNo
Отношение «СотрудникиОтделения» |
|
Вопрос: какой атрибут функционально зависит от атрибутов salary, branchNo ? и эта зависимость также не является полной, почему?
Функциональная зависимость salary, branchNo bAddress не является полной, т.к. существует функциональная зависимость branchNo bAddress.
Определение (2NF). Отношение, которое находится в первой нормальной форме и каждый атрибут которого, не входящий в состав первичного ключа, характеризуется полной функциональной зависимостью от этого первичного ключа.
Схема приведения отношения к 2NF
Пусть задано отношение R(x1, x2, y1, y2, y3) и x={x1, x2} – первичный ключ, т.е. существуют функциональные зависимости x y1, x y2, x y3.
Пусть в отношении отсутствуют повторяющиеся группы атрибутов и, следовательно, отношение R находится в 1NF.
Пусть зависимости x y1, x y2 являются полными функциональными зависимостями. Кроме того, существует функциональная зависимость x2 y3 и, следовательно, зависимость x y3 не является полной.
Устраним из отношения R зависимость x2 y3, нарушающую требование 2NF, выполнив декомпозицию исходного отношения на следующие два отношения.
Пусть L1={x2, y3}, L2={x1, x2, y1, y2}