Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЭИС(ЗАО) / ЛекцииТЭИС / Реляционная модель.doc
Скачиваний:
16
Добавлен:
27.03.2015
Размер:
428.03 Кб
Скачать

E) Приведение к IV нормальной форме

Для иллюстрации алгоритма рассмотрим отношение Проекты (Номер проекта*.,Код сотрудника*,Задание сотрудника*)

Сотрудники отношения Проекты могут участвовать в нескольких проектах, разные проекты могут содержать одинаковые задания. Предполагается, что каждый сотрудник, участвующий в некотором проекте, выполняет все задания по этому проекту. Отношение находится в НФБК

Проекты

Номер проекта*

Код сотрудника*

Задание сотрудника*

П1

С5

з1

П1

С5

з2

П1

С5

з3

П4

С2

з1

П4

С2

з2

П4

С3

з1

П4

С3

з2

П4

С5

з1

П4

С5

з2

П7

С6

з1

Недостатки отношения Проект:

  • при подключении / отстранении от проекта некоторых сотрудников приходится добавлять / исключать из отношения столько кортежей, сколько заданий имеется в проекте;

  • хранение в кортежах повторяющихся значений кодов сотрудников;

  • перечисление всех заданий по каждому проекту для каждого сотрудника исполнителя этого проекта

В отношении Проекты существуют следующие многозначные зависимости.

Номер проекта

Код сотрудника

Номер проекта

Задание сотрудника

Теорема Фейгина:

ОтношениеR(A,B,C) можно спроецировать без потерь в отношенияR1 (A,B) иR2 (A,C) в том и только том случае, когда существует зависимость А В / С (А В и А С).

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

ОпределениеIV Нормальной Формы: ОтношениеRнаходится в четвёртой нормальной форме в том и только в том случае, когда существует многозначная зависимость А В, а все остальные атрибутыRфункционально зависит от А.

Отношение Проекты можно представить в виде двух отношений в IVНФ.

Проекты-сотрудники (Номерпроекта*, Кодсотрудника*)

Проекты- задания (Номер проекта*, Задание сотрудника*)

Проекты -сотрудники

Номер проекта*

Код сотрудника*

П1

С5

П4

С2

П4

С3

П4

С5

П7

С6

Проекты-задания

Номер проекта*

Задание сотрудника*

П1

з1

П1

з2

П1

з3

П4

з1

П4

з2

П7

з1

Дублирование кодов сотрудников устранено.

Ещё один пример. При рассмотрении алгоритма Бойса-Кодда в отношении R! были определены только простые, функциональные связи. Если ввести следующие многозначные зависимости:

CT– каждый предмет могут вести несколько преподавателей;

C,SG– студент по конкретной дисциплине может иметь несколько оценок.

В этом случае, процесс нормализации отношения называется приведением к IVНФ. В целом алгоритм аналогичен алгоритму Бойса-Кодда:

Ключ исходного отношения (Iшаг) определяется точно также.

IIШаг иIIIшаг алгоритма Бойса-Кодда применяются вначале к сложным функциональным связям; если они выделены из отношения, дальнейшая декомпозиция идёт согласно алгоритму Бойса-Кодда.

Схематическое изображение алгоритма:

:

R 1(C, H, T, R, S, G)

C →→T H,R → C

H,T → R H,S → R

C,S →→ G

R2 (C,S,G)

C,S →→G

R3 (C,T,H,R,S)

C → T H,R → C

H,T → R H,S → R

В НФБК

R5 (C,H,R,S)

H,R → C

H,S→ R

R4 (C,T)

C→→ T

Утрата связи H,T R

R 5(H,R,C)

H,R → C

R6 (H,S,R)

H,S→ R

В НФБК

В НФБК

В НФБК

Ключ HS

Рассмотрим множество сложных связейCT;C,SG

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

Эта связьCSG:

Из исходного отношения выделены элементы, входящие в указанную связь. После декомпозиции анализ будет повторён для второй сложной связи. Очевидно, что алгоритм нормализации полностью совпадает с тем, что было описано раньше. Это связанно с тем, что сложные связи не могут быть определенны на других функциональных связях, кроме уже введённых.

ОПЕРАЦИИ НАД ОТНОШЕНИЯМИ.

Операция проекции

Позволяет выбрать из отношения необходимые домены и задать порядок, в котором их надо расположить.

T = R (список атрибутов)

Отношение, полученное в результате проецирования не должно содержать повторяющихся кортежей. Следовательно, в проекции отношения и результирующем не может содержаться меньше кортежей, чем в исходном отношении.

Операция проекции не задает порядка, в котором следуют кортежи.

Товар = Поставка (№ Пост, Товар)

Договор = Поставка (Товар, № Договора)

Поставщики = Поставка (№Пост)

  1. Перечислить товары, поступающие от всех поставщиков.

  2. Перечислить товары, поступающие по всем договорам.

  3. Привести список поставщиков.

Поставка

№ пост

Товар

№ договора

1

Шерсть

1

2

Шерсть

2

2

Шелк

1

Товар Договор

№ пост

Товар

Товар

№ договора

1

Шерсть

Шерсть

1

2

Шерсть

Шерсть

2

2

Шелк

Шелк

1

Поставщики

№ поставщика

1

2

Операция выборки

Выполняется над одним соотношением.

T = R [условие выборки]

Для значений атрибутов отношения Rформируются условия выборки следующего вида: АтрибутQзначение атрибута,

Где Q= {=, ≠,<,>,≥ ,≤}.

Эти условия могут связываться вместе с помощью логических операций и в общее условие выборки.

Результирующее отношение содержит такие кортежи из R, которые удовлетворяют заданному условию.

Дать сведения о поставках шелка: ПоставкаШ=Поставка(Товар=”Шелк”)

Операция соединения

Позволяет совместить кортежи из двух отношений в одном отношении. Операция соединения эквивалентна объединению операций произведения и ограничения.

R*S = (RS)[M1{Q(=)}M2],

Где М1 и М2 – ролевые атрибуты.

В качестве условия Qберется только равенство.

В результирующем отношении сохраняются только те кортежи, которые имеют одни и те же значения ролевых атрибутов, и общие должны не повторяться.

Атрибуты имеют общую область определения.

Пример 1:

Товар 1

Поставщик

Код товара

Наименование

Код поставщика

Имя

01

Шерсть

01

П1

02

Шёлк

02

П2

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

Возможные поставки=Товар1Поставщик

Возможные поставки

Код товара

Наименование

Код поставщика

Имя

01

Шерсть

01

П1

01

Шерсть

02

П2

02

Шёлк

01

П1

02

Шёлк

02

П2

Пример 2: Традиционная ситуация

ПоставкаТ

Товар1

КП

Код товара

Количество

КТ

Наименование

01

01

100

01

Шерсть

02

02

200

02

Шёлк


Поставки 2 = ПоставкаТ*Товар1

Поставки3 = Поставки2*Поставщики

Поставки 2

КП

Код товара

Наименование

Количество

01

01

Шерсть

100

02

02

Шелк

200

Пример 3: Исключительная ситуация

Операция соединения – операция обратная операции проекции. В некоторых случаях

при выполнении соединения получается отношение содержащее больше кортежей чем в исходном отношении. Такая ситуация называется ловушкой связей.

Поставка1 = Товар*Договор

Поставка1

№ поставщика

Товар

№ договора

1

Шерсть

1

1

Шерсть

2

2

Шерсть

1

2

Шерсть

2

2

Шёлк

1

Операция деления

T = R[MM2]S

Операция деления может быть выполнена только над двумя отношениями синонимами, имеющими ролевые атрибуты.

Операция выполняется в 2 этапа:

  1. Построение образов кортежей делителя по делимому;

im(делителя) = {(значения атрибутов кортежа делимого без ролевого атрибута),(….)}

Для каждого кортежа делителя просматриваются все кортежи делимого, в случае совпадения значений ролевых атрибутов, остальные атрибуты кортежа делимого будут составлять образ кортежа делителя.

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

  1. Дать список фирм, поставляющих товар 02 и 03.

Фирмы

Товар

КоФ

КоТ

КоТ

Ф1

Т1

Т2

Ф1

Т2

Т3

Ф1

Т3

Ф2

Т1

Ф2

Т2

Ф3

Т2

Ф3

Т3

Ф4

Т3

Фирма 23 = Фирма[КоТ÷ КоТ ]Товар

Этап Iim(Т2) = {(Ф1),(Ф2),(Ф3)}

im(Т3) = {(Ф1),(Ф3),(Ф4)}

Этап IIim(Т2)im(Т3) ={(Ф1),(Ф3)}

Фирма 23

КоФ

Ф1

Ф3

ПЯТАЯ НОРМАЛЬНАЯ ФОРМА

Результатом нормализации всех предыдущих схем отношений были два новых отношения. Иногда это сделать не удаётся, либо получаемые отношения заведомо имеют нежелательные свойства. В этом случае выполняют декомпозицию исходного отношения на отношения, количество которых превышают два.

Сотрудники-Отделы-Проекты

Код Сотрудника

Код Отдела

Номер Проекта

С01

01

П36

С02

02

П04

С03

03

П04

С04

02

П19

С05

04

П01

С05

04

П04

С06

03

П07

С08

05

П13

С09

05

П14

С09

06

П15

Один сотрудник может работать в нескольких отделах, причем в каждом отделе он может принимать участие в нескольких проектах.

В одном отделе могут работать несколько сотрудников, но каждый проект выполняет только один сотрудник.

Функциональных и многозначных зависимостей между атрибутами не существует.

Исходя из структуры отношения Сотрудники-Отделы-Проекты, можно заключить, что оно находится в 4НФ. Тем не менее в отношении могут быть аномалии, связанные с возможностью повторения значений атрибутов в нескольких кортежах. Например, то что сотрудник может работать в нескольких отделах, при увольнении сотрудника требуется отыскание и последующее удаление из исходной таблицы нескольких записей.

Введем определение зависимости соединения. ОтношениеR(X,Y…,Z) удовлетворяетзависимости соединения, которую обозначим как *(X,Y…,Z), в том и только в том случае, еслиRвосстанавливается без потерь путем соединения своих проекций на подмножествоX,Y…,Z. Зависимость соединения является обобщением функциональной или многозначной зависимостей.

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

Образуем новые отношения из составных атрибутов отношения Сотрудники-Отделы-Проекты

СО={Код Сотрудника, Код Отдела}

СП={Код Сотрудника, Номер Проекта}

ОП={Код Отдела, Номер Проекта}

Покажем, что если отношение Сотрудники-Отделы-Проекты спроецировать на отношения СО, СП и ОП, то соединение этих проекций даст исходное отношение. В этом случае можно утверждать, что в нашем отношении существовала зависимость соединения *(СО, СП,ОП).

СО

Код Сотрудника

Код Отдела

С01

01

С02

02

С03

03

С04

02

С05

04

С06

03

С08

05

С09

05

С09

06

ОП

Код Отдела

Номер Проекта

01

П36

02

П04

03

П04

02

П19

04

П01

04

П04

03

П07

05

П13

05

П14

06

П15

СП

Код Сотрудника

Номер Проекта

С01

П36

С02

П04

С03

П04

С04

П19

С05

П01

С05

П04

С06

П07

С08

П13

С09

П14

С09

П15

Ранее мы выполняли соединение двух проекций и сразу получали искомый результат. Для восстановления отношения из трех(или нескольких) проекций надо получить все попарные соединения отношений (так как информация о том, какое из них “лучше” отсутствует), над которыми затем выполнить операцию пересечения множеств. Можно проверить, так ли это.

Существуют и другие способы восстановления исходного отношения из его проекций. Так, для восстановления отношения Сотрудники-Отделы-Проекты можно соединить отношения Сотрудники-Отделы и Отделы-Проекты по атрибуту Код Отдела, после чего полученное отношение соединить с отношением Сотрудники-Проекты по составному атрибуту(Код Сотрудника, Номер Проекта).

R1=СО*ОП

R1

Код Сотрудника

Код Отдела

Номер Проекта

С01

01

П36

С02

02

П04

С02

02

П19

С03

03

П04

С03

03

П07

С04

02

П04

С04

02

П19

С05

04

П01

С05

04

П04

С06

03

П04

С06

03

П07

С08

05

П13

С08

05

П14

С09

05

П13

С09

05

П14

С09

06

П15

Сотрудники-Отделы-Проекты=R1*СП

Сотрудники-Отделы-Проекты

Код Сотрудника

Код Отдела

Номер Проекта

С01

01

П36

С02

02

П04

С03

03

П04

С04

02

П19

С05

04

П01

С05

04

П04

С06

03

П07

С08

05

П13

С09

05

П14

С09

06

П15

Замечание

Отношения Сотрудники-Отделы, Сотрудники-Проекты и Отделы-Проекты находятся в 5НФ. Эта форма является последней из известных. Условия ее получения довольно нетривиальны и поэтому она почти не используется на практике. Более того, она имеет определенные недостатки!

Предположим необходимо узнать, где и какие проекты исполняет сотрудник с кодом 02. Для этого в отношении Сотрудники-Отделы найдем, что сотрудник с кодом 02…

Соседние файлы в папке ЛекцииТЭИС