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