Анализ вклада Кодда в Великий Спор


Операции реляционной алгебры - часть 4


В один из общепринятых наборов примитивов входят ограничение, проекция, произведение, объединение и вычитание.) Подобно операциям (расширенного) произведения, объединения и пересечения, естественное соединение коммутативно и ассоциативно.

Деление: В статье о полноте впервые упоминалась эта операция. В действительности, понятно, что Кодд ввел ее как "алгебраического двойника квантора всеобщности". Он говорит, что операция не является примитивной; ее можно определить в терминах уже описанных операций. (На самом деле, определение не совсем такое, какое мы используем сегодня, но различия незначительны. Можно определить вариант операции - отличающийся от определяемого в статье - допускающий деление любого отношения на любое другой; см. [6].)

Не интересует ли вас, почему операция называется "делением"? Причину демонстрирует следующее тождество:

( R TIMES S ) DIVIDEBY S = R

Деление - это операция, в некотором смысле обратная Декартову произведению, и это не только двойник квантора существования, чем, как казалось, она являлась. С операцией связаны проблемы пустых множеств и связанные с ними [6]. На самом деле, Кодд предлагает пример, иллюстрирующий проблему: Пусть имеется отношение SP {S#, P#, ...}, показывающее, какие поставщики поставляют какие детали. Кодд утверждает, что выражение SP {S#, P#} DIVIDEBY SP {P#} выдаст номера поставщиков, поставляющих все детали. Однако, если не имеется никаких деталей, это выражение выдаст неверный результат. (Не будет выдано ни одного номера поставщика, хотя следует выдать их все.)

Более хорошую основу для обхождения с теми разновидностями проблем, для решения которых было предназначено реляционное деление, дают реляционные сравнения - но исходная реляционная модель, определенная Коддом, вообще не включает таких сравнений [7].

Факторизация: Эта операция (сегодня более часто называемая гнездованием [nesting]) преобразует нормализованное отношение в ненормализованную форму. Например, для заданного отношения EMP с атрибутами EMP# и DEPT# можно было бы использовать эту операцию для получения ненормализованного отношения с атрибутами DEPT# и SET_OF_EMPS, в котором каждый кортеж содержит номер отдела и множество всех соответствующих номеров служащих.Эта операция не используется в основной части статьи; Кодд выносит ее в приложение, полагая, что это может быть полезно "для целей презентации". Наше понимание истинной природы нормализации нормализации улучшилось с 1971 г.; мы теперь относимся ко всем отношениям как к нормализованным. "Ненормализованное отношение" является противоречивым сочетанием терминов. Однако на самом деле отношения, включающие значения-отношения, часто являются противопоказанными.




Начало  Назад  Вперед



Книжный магазин