Главная » SQL, Базы данных » ПРИМЕЧАНИЕ ПО ПОВОДУ АТРИБУТОВ, СОДЕРЖАЩИХ ОТНОШЕНИЯ В КАЧЕСТВЕ ЗНАЧЕНИЙ

0

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

7.           Получить список номеров поставщиков (s#) детали с номером Р1.

8.           Получить список номеров деталей (Р#), поставляемых поставщиком с номером S1.

Как показано ниже, эти два запроса имеют совершенно разные формулировки.

1.            ( SPQ WHERE TUPLE { Р# Р# (‘Р1′) } £ PQ { Р# } ) { S# }

2.            ( ( SPQ WHERE S# = S# (‘S1′) ) UNGROUP PQ ) { P# }

В  данном  примере  предполагается,  что  SPQ  —  это  переменная  отношения,  допустимыми значениями  которой  являются  отношения  в  форме,  аналогичной  показанной  на  рис.  12.17. Следует  отметить,  что  в  данном  случае  не  только  наблюдается  значительное различие  между формулировками запросов, но и сами они становятся намного сложнее по сравнению со своими аналогами для переменной отношения SP.

Еще  хуже  обстоит  дело  с  операциями  обновления.  Рассмотрим  следующие  две  операции обновления.

1.         Ввести сведения о новой поставке 500 штук деталей типа Р5, выполняемой по ставщиком с номером S6.

2.         Ввести сведения о новой поставке 500 штук деталей типа Р5, выполняемой по ставщиком с номером S2.

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

11Фактическиподобныепеременныеотношенияраньшедаженесчиталисьдопустимымииназывалисьненормализованными,т.е.ненаходящимисявпервой нормальнойформе(см.такжеглаву6).

отличаться (не говоря уже о том, что и в данной ситуации обе эти операции будут намного сложнее, чем при работе с переменной отношения SP).

1.          INSERT SPQ RELATION

{ TUPLE { S# S# (‘S61),

PQ RELATION { TUPLE { P# P# ( ‘ P5 ‘ ) ,

QTY QTY ( 500 )}}} };

2.          UPDATE SPQ WHERE S# = S# (‘S2′)

{ INSERT PQ RELATION { TUPLE { P# P# { ‘P5′ ) ,

QTY QTY ( 500 ) } } } ;

Рис. 12.17. Переменная отношения SPQ с атрибутом, содержащим в качестве значений другое отношение

Переменные отношения (по крайней мере, базовые переменные отношения)  предпочтительнее создавать без использования подобных атрибутов, принимающих в качестве значений другие отношения, так как в этом случае они обладают более простой логической структурой, что существенно упрощает выполнение с ними различных операций. Однако это замечание следует воспринимать лишь как рекомендацию, но не как обязательное правило. На практике вполне могут  возникать такие ситуации, когда имеет смысл использовать атрибут со значениями в виде отношений в некоторой переменной отношения и даже в базовой переменной отношения. Например, на рис. 12.18 показано (частично) возможное значение переменной отношения каталога RVK, в которой хранятся сведения о переменных отношения некоторой базы данных с указанием их потенциальных ключей. Атрибут ск в этой переменной отношения содержит  значения в виде отношений. Причем он одновременно является компонентом  единственного потенциального ключа переменной отношения RVK! Определение этой переменной отношения на языке Tutorial D может выглядеть, как показано ниже.

VAR RVK BASE RELATION

{ RVNAME NAME, CK RELATION { ATTRNAME NAME

} } KEY { RVNAME, CK } ;

Примечание. В упр. 12.3 требуется найти способ устранения атрибутов,  значениями которых являются отношения, если такое устранение является желательным (что обычно имеет место на практике)12.

Рис. 12.18. Переменная отношения RVK, входящая в каталог некоторой базы данных

12.2.  РЕЗЮМЕ

На этом заканчивается первая из двух глав, посвященных дальнейшей нормализации. В ней обсуждались концепции первой, второй и третьей нормальных форм, а также нормальной формы Бойса-Кодца. Вообще говоря, разные нормальные формы (включая четвертую и пятую нормальные формы, речь о которых пойдет в следующей главе) связаны между собой отношениями упорядочения, в том смысле, что каждая переменная отношения на некотором  уровне нормализации соответствует требованиям всех более низких уровней нормализации, тогда как обратное утверждение неверно, т.е. на каждом уровне нормализации могут быть переменные отношения, которые не находятся на всех более высоких уровнях нормализации. Более того, всегда можно выполнить  приведение к НФБК (а на самом деле к 5НФ), т.е. любую заданную переменную отношения всегда можно заменить эквивалентным набором переменных отношения, которые находятся в НФБК (или же в 5НФ). Такое приведение используется для того, чтобы избежать избыточности и, следовательно, возникновения некоторых аномалий обновления.

12  И возможным! Следует отметить, что эту задачу невозможно решить в случае переменной отношения RVK, по крайней мере, непосредственно (т.е. без введения своего рода атрибута CKNAME, с указанием "имени потенциального ключа").

Процесс нормализации заключается в замене данной переменной отношения некоторым набором ее проекций, составленным таким образом, чтобы обратное соединение этих проекций позволяло вновь получить исходную переменную  отношения. Иначе говоря, этот процесс является обратимым (т.е. декомпозиция всегда выполняется без потерь информации). Также было показано, что решающую роль в этом процессе играют функциональные зависимости. В  частности, теорема Хита прямо утверждает, что если некоторая декомпозиция выполняется в соответствии с определенной ФЗ, то она будет выполнена без  потерь. Такое положение дел может рассматриваться как еще одно  подтверждение приведенного в главе 11 утверждения, что понятие ФЗ является если "не совсем фундаментальным, то весьма близким к этому".

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

приведением к НФБК и к декомпозиции с сохранением зависимостей) в некоторых случаях может привести к конфликтной ситуации.

В заключение данной главы вашему вниманию предлагается весьма изящное (и абсолютно точное) определение ЗНФ и НФБК, данное Дзаниоло (Zaniolo)  [12.7]. Сначала приведем определение ЗНФ.

■   Третья нормальная форма (определение Дзаниоло). Предположим, что дана  переменная отношения R, что X является некоторым подмножеством атрибутов этой переменной отношения R и что А является некоторым отдельным атрибутом переменной отношения R. Переменная отношения R находится в третьей нормальной форме тогда и только тогда, когда для каждой функциональной зависимости X → А в переменной отношения R верно по крайней мере одно из следующих утверждений.

1.  Подмножество X включает атрибут А (т.е. данная ФЗ тривиальна).

2.  Подмножество X является суперключом переменной отношения R.

3.  Атрибут А входит в состав некоторого потенциального ключа переменной от ношения R.

Определение НФБК можно получить из приведенного выше определения ЗНФ, просто исключив третье утверждение (из чего следует, что НФБК является  более строгим ограничением по сравнению с ЗНФ). Именно третье утверждение является причиной того   "недостатка"   исходного   определения   третьей   нормальной   формы   Коддом, который в конечном итоге стал причиной введения нормальной формы Бойса-Кодда.

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии