Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Обзор начальной алгебры
Как утверждалось выше, реляционная алгебра, определенная Коддом в [6.2], состоит из восьми операторов, составляющих две группы, по четыре оператора в каждой. 1. 1. Традиционные операции над множествами: объединение, пересечение, вычитание и декартово произведение (все они модифицированы с учетом того, что их операндами являются отношения, а не произвольные множества). 2. 2. Специальные реляционные операции: выборка, проекция, соединение и деление. Ниже приведены упрощенные определения этих восьми операторов (см. рис. 6.1). Выборка: возвращает отношение, содержащее все кортежи из определенного отношения, которые удовлетворяют определенным условиям. Операция выборки также называется операцией ограничения[11][1], поэтому далее в этой книге будет также употребляться термин ограничение, если подразумевается алгебраическая операция. Проекция: возвращает отношение, содержащее все кортежи (называемые как подкортежи) определенного отношения после исключения из него некоторых атрибутов. Произведение: возвращает отношение, содержащее всевозможные кортежи, которые являются сочетанием двух кортежей, принадлежащих соответственно двум определенным отношениям. Объединение: возвращает отношение, содержащее все кортежи, которые принадлежат или одному из двух определенных отношений, или обоим. Пересечение: возвращает отношение, содержащее все кортежи, которые принадлежат одновременно двум определенным отношениям. Вычитание: возвращает отношение, содержащее все кортежи, которые принадлежат первому из двух определенных отношений и не принадлежат второму. Соединение: возвращает отношение, кортежи которого — это сочетания двух кортежей (принадлежащих соответственно двум определенным отношениям), имеющих общее значение для одного или нескольких общих атрибутов этих двух отношений (и такие общие значения в результирующем кортеже появляются только один раз, а не дважды). Замечание. Строго говоря, это естественное соединение. (О различных видах соединений речь идет ниже в этой главе.) Деление: для двух отношений, бинарного и унарного, возвращает отношение, содержащее все значения одного атрибута бинарного отношения, которые соответствуют (в другом атрибуте) всем значениям в унарном отношении. На этом закончим краткий обзор первоначальных операторов. План остальной части главы такой: в следующем вводном разделе повторно и более подробно рассматривается вопрос замкнутости. Затем в деталях обсуждается восемь первоначальных операторов, предложенных Коддом и даются некоторые примеры использования этих операторов для формулирования запросов. Далее обсуждается вопрос "зачем нужна алгебра" и описываются два немаловажных оператора, называемых EXTEND и SUMMARIZE. Затем рассматриваются операции присвоения, обновления и реляционное сравнение. И наконец, дается краткое заключение. Замкнутость Уже не раз отмечалось, что результат каждой операции над отношением (или реляционной операции) также является отношением. Это реляционное свойство называется свойством замкнутости и впервые упоминается в главе 3. Там же делается вывод: поскольку результат любой операции имеет тот же тип, что и исходные объекты (отношения), то результат одной операции может использоваться в качестве исходных данных для другой. Таким образом, имеется возможность, например, взять или проекцию от объединения, или соединение от двух выборок, или объединение соединения и пересечения и т.д. Другими словами, можно записывать вложенные выражения, т.е. выражения, в которых операнды сами представлены выражениями вместо простых имен отношений. В этой главе приводится много примеров таких вложенных выражений (фактически они будут встречаться на протяжении всей книги). Замечание, Есть явная аналогия между возможностями использования вложенных реляционных выражений в реляционной алгебре и вложенных арифметических выражений в обычной арифметике. Действительно, тот факт, что отношения замкнуты, важен в алгебре по тем же причинам, по которым в обычной арифметике важно, что числа замкнуты. При обсуждений свойства замкнутости в главе 3 сознательно умалчивался один существенный момент. Как уже разъяснялось в главе 4, отношение имеет две части — заголовок и тело; нестрого говоря, заголовок — это множество атрибутов, а тело — это данные. Заголовок для базового отношения, очевидно, вполне конкретен и известен системе, поскольку он определяется как часть соответствующего оператора create base relation (см. главу 4). Ну а как же для производных отношений? Рассмотрим, например, выражение S JOIN P, которое представляет соединение отношения поставщиков и отношения деталей по соответствующим городам (значение атрибута CITY общее для двух отношений). Что будет заголовком для результата этого соединения? Обязательное наличие заголовка диктуется замкнутостью, а системе должно быть известно, что это такое (это в равной степени необходимо и пользователю, как мы скоро увидим). Поэтому, если рассматривать замкнутость более строго, каждая реляционная операция должна быть определена таким образом, чтобы выдавать результат с надлежащим заголовком (т.е. с соответствующим набором необходимых имен атрибутов). Причина такого требования к результирующим отношениям заключается в необходимости иметь возможность обращаться к именам атрибутов в последующих операциях, например в дальнейших операциях, расположенных на более глубоких уровнях вложенного выражения. Мы не могли бы, например, даже записать такое выражение, как (S JOIN P) WHERE WEIGHT > 18, если бы не знали, что результат вычисления выражения s join p имеет атрибут WEIGHT. Другими словами, необходим такой набор правил наследования имен атрибутов, встроенный в алгебру, чтобы можно было предсказывать имена атрибутов на выходе произвольной реляционной операции, зная имена атрибутов на входе этой операции. Задав такие правила для всех операций, можно гарантировать, что для выражения любой сложности будет вычисляться результат, имеющий вполне определенный набор атрибутов. Прежде чем двигаться дальше, отметим, что этот аспект алгебры, как правило, недооценивается в литературе, кроме двух заметных работ — Холла (Hall) и др. [6.9] и Дарвена (Darwen) [4.7]. Версия алгебры, представленная в этой главе, была выбрана в значительной мере под влиянием работы Дарвена. (В более ранних изданиях этой книги, обращаясь к проблеме наследования имен атрибутов, мы использовали подход, который был значительно хуже предложенного Дарвеном.) Наша версия реляционной алгебры определена таким образом, чтобы гарантировать, что все отношения будут иметь правильные заголовки, т.е. заголовки, в которых все атрибуты имеют правильные имена, уникальные в содержащем их отношении. Для достижения этой цели необходим новый оператор rename, предназначенный для переименования атрибутов в определенном отношении. Точнее, для определенного отношения оператор rename возвращает (по крайней мере концептуально) новую копию отношения, в котором некоторый атрибут имеет другое заданное имя. (Определенное отношение, конечно, может быть результатом вычисления выражения, включающего другие алгебраические операции.) Например, можно написать: Date: 2016-05-25; view: 839; Нарушение авторских прав |