Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kolokvium / MARTIN3.DOC
Скачиваний:
29
Добавлен:
19.04.2013
Размер:
92.67 Кб
Скачать

Вторичные ключи

Вторичные ключи неоднозначно идентифицируют элементы данных; одному значению элемента данных, являющегося вторичным ключом, соответствуют О, 1 или несколько значений связанного с ним элемента данных. Атрибуты, снабженные двойными выходящими из них стрел­ками, называются вторичными ключами (или поисковыми ключами).

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

Транзитивные зависимости

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

В примере, приведенном на рис. 6.2, программист А использует главную запись ЗАКАЗ-НА-ЗАКУПКУ такой структуры:

Эту запись можно представить с помощью диаграммы следующим образом:

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

Процесс удаления транзитивных зависимостей по существу экви­валентен преобразованию в третью нормальную форму, рассмотрен­ную в гл. 14.

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

Таблица 15.2

Устранение скрытых транзитивных зависимостей в представлениях пользователей о данных

Запись, взятая из пользовательского представления о данных на рис. 6.2, содер­жит скрытую транзитивную зависимость:

Ее можно представить в виде диаграммы следующим образом:

Однако ИМЯ-ПОСТАВЩИКА и АДРЕС-ПОСТАВЩИКА идентифицируются эле­ментом НОМЕР-ПОСТАВЩИКА. Следовательно, запись должна быть представлена таким образом:

СЦЕПЛЕННЫЕ КЛЮЧИ

Некоторые элементы данных не могут быть идентифицированы од­ним элементом в представлении пользователя о данных. В предыду­щих примерах говорилось о том, что несколько поставщиков могут обеспечивать поставку изделия, причем каждый из них определяет на него различную цену. Ключ НОМЕР-ПОСТАВЩИКА использует­ся для идентификации информации о поставщике. Ключ НОМЕР- ИЗДЕЛИЯ используется для идентификации информации об изделии. Ни один из данных ключей не годится для идентификации элемента ЦЕНА. Этот элемент данных зависит от элементов ПОСТАВЩИК и ИЗДЕЛИЕ. Выше для идентификации элемента ЦЕНА мы создавали новый ключ, состоящий из НОМЕРА-ПОСТАВЩИКА и НОМЕРА- ИЗДЕЛИЯ, объединенных вместе (сцепленных). Мы изображаем их в одном овале:

Сцепленный ключ имеет простые связи с ключами НОМЕР-ПО­СТАВЩИКА и НОМЕР-ИЗДЕЛИЯ. Результирующая диаграмма имеет следующий вид:

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

Каждый раз при определении сцепленного ключа разработчик дол­жен обеспечивать зависимость идентифицируемых им элементов дан­ных от всего ключа в целом, а не от его части. Сцепленные ключи дают возможность представлять все записи (сегменты) в простой канони­ческой форме с помощью одного ключевого блока.

На практике иногда необходимо объединить в сцепленный ключ больше двух элементов данных.

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

Схема, раскрывающая связи компонентов этого ключа, выглядит следующим образом:

Соседние файлы в папке Kolokvium