Для четвертой нормальной формы (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 |


