Для четвертой нормальной формы (4НФ) требуется, чтобы в одной таблице не содержались независимые элементы данных, если между ними существует отношение "многие-ко-многим". В таблице 2.16 тре­бования четвертой нормальной формы не соблюдены, поскольку между полем "Паром" и полями, идентифицирующими членов команды, сущест­вует отношение "многие-ко-многим". Четвертая нормальная форма зависит от конкретного типа отношений, поэтому она рассматривается ниже.

Для пятой нормальной формы (5НФ) требуется, чтобы можно было восстановить исходную таблицу на основе информации таблиц, на которые она была разбита. В нашем примере исходной таблицей была таблица РАСПИСАНИЕ.

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


Типы отношений в реляционной модели

Обычно перед рассмотрением нормализации реляционной модели обсуждаются отношения. Од­нако в данном случае они рассматриваются во вторую очередь, т. к. можно создавать отношения между таблицами, только если они приведены хотя бы к первым трем нормальным формам. В данном разделе описыва­ются четыре основных типа отношений между таблицами, для графиче­ского представления которых используются схемы “Элемент-Отношение” (ER-схемы).

Самым простым отношением между таблицами является отношение "один-к-одному". В таком отношении одной строке первой таблицы соот­ветствует только одна запись во второй. Таблицы, связанные отношением "один-к-одному", можно объединить в одну таблицу, которая состоит из полей обеих таблиц.

НЕ нашли? Не то? Что вы ищете?

Отношение "один-к-одному" часто используется для разделения таблиц, содержащих большое количество полей. Например, это может потребоваться, чтобы сократить время просмотра полей, содержащих определенный набор данных. В некоторых случаях необходимо управлять доступом к час­тям таблиц, которые содержат важные или конфиденциальные данные. Примером такой информации является таблица служащих, в которой каж­дый может увидеть имена служащих, но только сотрудники отдела кадров имеют право просматривать информацию об окладе и другие секретный данные (табл. 2.17, 2.18).

Таблица 2.17 ОФИЦЕРЫ

Офицер

Должность

Фамилия

Имя

00668

Капитан

Johansson

Lars

00721

Капитан

Karlsson

Bo

00885

Боцман

MacGregor

Paul

00912

Боцман

McDenott

John

00955

Капитан

Olafson

Karl

01023

Капитан

Kekkonen

Eino

01155

Боцман

McDougal

William

01203

Боцман

Kashihara

Matsuo


Таблица 2.18 ОКЛАДЫ

Офицер

Оклад

00668

6500.00

00721

6250.00

00885

5100.00

00912

5000.00

00955

6100.00

01023

6050.00

01155

4900.00

01203

4850.00


На рис. 2.6 показана E-R схема для таблиц ОФИЦЕРЫ и ОКЛАД. Еди­ницы с обеих сторон ромба указывают на отношение "один-к-одному"'. Кроме того, элементы в отношении могут быть как обязательными, так и нет. Необязательные отношения обозначаются кругами, нарисованными на линии, которая соединяет необязательный элемент и отношение. На рис. 2.5 отношение "Оплачено-Оклады" является необязательным, т. к. работа некоторых служащих может быть почасовой, а информация о вы­платах хранится в таблице ВЫПЛАТЫ. Таблицы с обязательным отношени­ем "один-к-одному" являются базовыми. Таблица, связанная необязатель­ным отношением с базовой, является связанной таблицей. Для хранения базы данных, имеющей несколько таблиц, связанных отношениями "один-к-одному", некоторые из которых являются необязательными, требуется меньше свободного места на диске.

Рис. 2.6 ER-схема для отношения "один-к-одному"

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

В табл. 2.19, 2.20 показано отношение "один-ко-многим", связывающее не­сколько записей таблицы МАРШРУТЫ с одной записью таблицы ПАРОМЫ. Отношение позволяет вывести все записи таблицы МАРШРУТЫ, используя название парома.

На ER-схеме, показанной на рис. 2.7, это отношение обозначено сим­волами "1" и "m".

Рис. 2.7 ER-схема для отношения "один - ко-многим "

Отношение "многие-к-одному" противоположно типу "один-ко-многим". Отношение "многие-к-одному" позволяет вывести имена паромов для лю­бой записи в таблице МАРШРУТЫ. Если выбор отношения "многие-к-одному" или "один-ко-многим" не играет большой роли, то отношение между таблицами называется рефлексивным. Отношение "многие-к-одному" является отражением отношения "один-ко-многим" (табл. 2.21, 2.22).

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

Рис. 2.8 ER-схема для отношения " многие-к-одному "

Отношение "многие-ко-многим" нельзя представить как простые связи между двумя элементами. Это отношение задается с помощью таблицы, которая связана отношениями "многие-к-одному" с двумя базовыми таб­лицами.

В промежуточной таблице КОМАНДА хранятся сведения о членах коман­ды, участвующих в рейсе (табл. 2.16). С помощью таблицы КОМАНДА таблица ПАРОМЫ (табл. 2.14) связывается отношением "многие-ко-многим" с табли­цей ОФИЦЕРЫ (табл. 2.17), используя поля "Капитан", "Боцман" "Помощник" и "Паром".

Таблица КОМАНДА связана отношением "многие-к-одному" с таблицей ПАРОМЫ, а также отношением "многие-к-одному" с таблицей ОФИЦЕРЫ. Таким образом, между таблицами ПАРОМЫ и ОФИЦЕРЫ устанавливается отношение "многие-ко-многим". Офицеры, служащие на пароме, не зави­сят друг от друга: теоретически любой квалифицированный член команды может выполнять определенный набор работы на любом участке маршру­та. Однако рассмотренная таблица не приведена к четвертой нормальной форме, т. к. она содержит независимые элементы.

В табл. 2.23 показана преобразованная промежуточная таблица КОМАНДА, в которой можно назначить служащих на определенные участки пути. В таблице имеется по одной записи на каждого офицера для одного участка маршрута.

Таблица 2.23 КОМАНДА, приведенная к четвертой нормальной форме

Офицер

Паром

Маршрут

Порт отправления

Порт назначения

01023

528

92033

SFO

HNL

01155

528

92033

SFO

HNL

01367

528

92033

SFO

HNL

01023

528

92033

HNL

HNL

01155

528

92033

HNL

HNL

01367

528

92033

HNL

HNL

01023

528

92033

HNL

OSA

01155

528

92033

HNL

OSA

01367

528

92033

HNL

OSA

01023

528

92033

OSA

OSA

01155

528

92033

OSA

OSA

01367

528

92033

OSA

OSA

01023

528

92033

OSA

INC

01155

528

92033

OSA

INC

01367

528

92033

OSA

INC


В эту таблицу можно добавить новые поля при условии, что они полно­стью зависят от всех полей внешнего ключа. Примером зависимого эле­мента может служить финансовая информация, в которую можно вклю­чить такие атрибуты, как продолжительность рабочего дня, сверхурочные часы и компенсируемые расходы для каждого члена экипажа на каждом участке пути. Такие элементы называются слабыми или ассоциативными, т. к. их значения взяты из других базовых таблиц. Таблица КОМАНДА не может после добавления ассоциативных элементов считаться строго про­межуточной, потому что по определению промежуточная таблица содер­жит только те поля, которые соответствуют внешним ключам.

ER-схема, связывающая офицеров и участки маршрута, устанавливает между таблицами отношение "многие-ко-многим" с помощью промежу­точной таблицы (рис. 2.9). Заключенное в круг поле "Дата" и связанное с ним отношение "назначен в команду" составляют основу: на заданную дату каждый офицер может быть назначен только на один рейс. Таким образом, основой отношения являются данные об отплытии и прибытии для заданного участка. Для выполнения условия, что один офицер не мо­жет находиться в одно и то же время в нескольких местах, требуется создать индекс, содержащий все поля таблицы КОМАНДА, и определить отсутствие совпадений его значений. Ассоциативные элементы обозначаются на E-R схемах ромбом, вписанным в прямоугольник элемента. Кроме того, связь между таблицей ОФИЦЕРЫ и КОМАНДА необязательна: офицер может быть в отпуске, заболеть или выполнять работу на берегу.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6