Вторичные ключи
Вторичные ключи неоднозначно идентифицируют элементы данных; одному значению элемента данных, являющегося вторичным ключом, соответствуют О, 1 или несколько значений связанного с ним элемента данных. Атрибуты, снабженные двойными выходящими из них стрелками, называются вторичными ключами (или поисковыми ключами).
На результирующей схеме в табл. 15.1 элемент данных Е является вторичным ключом. Вторичные ключи могут также состоять из сцепленных элементов данных (рис. 5.6). Необходимо отметить, что вторичные ключи не дают информации о структуре данных. Они обеспечивают специалиста информацией о том, как эти данные используются.
ТРАНЗИТИВНЫЕ ЗАВИСИМОСТИ
Представление пользователя о данных, например записи, используемые прикладными программистами, часто содержит скрытые транзитивные зависимости.
Процесс удаления транзитивных зависимостей по существу эквивалентен преобразованию в третью нормальную форму.
Согласно описываемому здесь методу конструирования транзитивные зависимости будут удаляться из пользовательских представлений о данных при построении диаграммы путем изображения атрибутов пользователей не транзитивно, а непосредственно зависимыми от ключа.
СЦЕПЛЕННЫЕ КЛЮЧИ
Некоторые элементы данных не могут быть идентифицированы одним элементом в представлении пользователя о данных. В предыдущих примерах говорилось о том, что несколько поставщиков могут обеспечивать поставку изделия, причем каждый из них определяет на него различную цену. Ключ НОМЕР-ПОСТАВЩИКА используется для идентификации информации о поставщике. Ключ НОМЕР- ИЗДЕЛИЯ используется для идентификации информации об изделии. Ни один из данных ключей не годится для идентификации элемента ЦЕНА. Этот элемент данных зависит от элементов ПОСТАВЩИК и ИЗДЕЛИЕ. Для идентификации элемента ЦЕНА мы создавали новый ключ, состоящий из НОМЕРА-ПОСТАВЩИКА и НОМЕРА- ИЗДЕЛИЯ, объединенных вместе (сцепленных).
Вводя эту форму сцепленного ключа в логическое представление данных, мы обеспечиваем зависимость каждого элемента данных от одного ключевого элемента данных.
Каждый раз при определении сцепленного ключа разработчик должен обеспечивать зависимость идентифицируемых им элементов данных от всего ключа в целом, а не от его части. Сцепленные ключи дают возможность представлять все записи (сегменты) в простой канонической форме с помощью одного ключевого блока.
На практике иногда необходимо объединить в сцепленный ключ больше двух элементов данных.
Отношения между ключами
Отношения типа М : M между записями (например, групповой брак) обусловливают возникновение некоторых проблем, которых желательно было бы избежать. Каноническая схема не будет содержать отношений М : М между первичными ключами. Более того, она должна быть разработана таким образом, чтобы такие отношения не появлялись и в будущем по мере развития баз данных.
В том случае, когда на овал - диаграмме используются блоки, изображающие сцепленные ключи, для каждого элемента данных, являющегося компонентом сцепленного ключа, изображаются отдельные блоки.
Возможно, что некоторые элементы данных, составляющие сцепленный ключ, на результирующем графе уж не будут ключами.
Для решения этой проблемы в том случае, если процедура конструирования устанавливает связи между ключами в одном направлении, добавляются эквивалентные связи в обратном направлении, т. е. связь между ключами изображается двунаправленными стрелками. Теперь, если есть отношение типа М : М между двумя ключами А и В и путь в любом направлении предположительно может пересечься, вводится третий ключ А+В: если использовать такую процедуру, создаваемая каноническая схема не будет содержать отношение типа М:М, исключение составляют те случаи, когда связь не может быть использована в одном направлении.
ПЕРЕСЕКАЮЩИЕСЯ АТРИБУТЫ
Граф, получаемый в результате объединения представлений пользователей о данных, может содержать пересекающиеся атрибуты. Пересекающийся атрибут - это атрибут, который связан с несколькими ключами, т. е. блок, изображающий атрибут, имеет несколько указывающих на него стрелок.
На результирующем каноническом графе пересекающиеся атрибуты должны отсутствовать.
Способы преобразования пересекающихся атрибутов
Пересекающийся атрибут можно исключить одним из трех следующих способов:
1.Все связи, кроме одной, заменяются эквивалентными связями с существующим ключом
2.Каждый избыточный вариант пересекающегося атрибута присоединяется соответствующему ключу
3.Пересекающийся атрибут превращается в ключ без атрибутов:
ИЗОЛИРОВАННЫЕ АТРИБУТЫ
Изолированный атрибут-атрибут, который не идентифицируется первичным ключом. Он изображается блоком, не имеющим одиночных стрелок, направленных к нему или от него, хотя двойные стрелки могут указывать на него. Изолированный атрибут может обрабатываться одним из следующих способов:
1. Он может быть представлен как повторяющийся атрибут в записи переменной длины.
2. Он может быть обработан как одиночный ключ - запись, состоящая из одного элемента данных.
Часто такой атрибут получается в результате ошибки при интерпретации пользовательских данных, и поэтому правомерность его наличия должна быть тщательно исследована.