Как правило, системы баз данных оснащены языком запросов, которые могут помочь его пользователям запрашивать экземпляры. Существует два таких типа - реляционная алгебра и реляционное исчисление. Первый является процедурным который принимает экземпляры отношений как входные данные и выводит примеры отношений как выходные. Использует для этого унарные или двоичные исчисления. Реляционная алгебра выполняется рекурсивно, а рассматриваются как отношения.

Декартово произведение (Χ)

Объединяет информацию двух разных отношений в одну.

Обозначения - r Χ s,

где r и s - отношения, а их выход будет определяться как

r Χ s = {qt | q ∈ r и t ∈ s}.

Вывод. Устанавливает отношение, которое показывает все книги и статьи, написанные с помощью учебника.

Переименовать операцию (ρ).

Отношением реляционной алгебры являются результаты, но без какого-либо имени. Операция переименования позволяет изменить выходное значение, обозначается маленькой греческой буквой ρ .

Обозначение - ρ x (E),

где результат выражения E сохраняется с именем x.

Дополнительные операции:

  • установить пересечение;
  • присваивание;
  • естественное соединение.

Реляционное исчисление

Является непроцедурным язык запросов, то есть он говорит, что делать, но не объясняет, как это реализовать. Реляционное исчисление существует в двух формах:

  • корреляционное исчисление кортежа;
  • фильтрация переменных диапазонов.

Обозначения - T/Состояние: возвращает все кортежи T, удовлетворяющие условию. Результат. Возвращает кортежи с именем. TRC можно количественно определить. Можно использовать экзистенциальные (∃) и универсальные кванторы (∀). Вывод. Вышеприведенный запрос даст тот же результат, что и предыдущий.

Доменное реляционное исчисление DRC

Переменная фильтрации использует домен атрибутов вместо целых значений кортежа (как это сделано в TRC, упомянутом выше).

Обозначения - {a 1 , a 2 , a 3 , ..., a n | P (a 1 , a 2 , a 3 , ..., a n)},

где a1, a2 - атрибуты, а P обозначает формулы, построенные внутренними значениями.

Вывод. Устанавливает статью, страницу и тему из отношения TutorialsPoint, где subject является базой данных.

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

Вариации и схемы реляционного исчисления и алгебры

Модель ER, когда она концептуализирована на диаграммах, дает хороший обзор сущностных отношений, которые легче понять. Схематические изображения могут быть сопоставлены с реляционной схемой, т. е. их можно создать совместно друг с другом. Невозможно импортировать все ограничения ER в реляционную модель, но может быть сгенерирована приблизительная структура. Существует несколько процессов и алгоритмов, доступных для преобразования диаграмм в эту систему. Некоторые из них автоматизированы, а другие создаются вручную. Диаграммы ER в основном состоят из следующих критериев:

  • сущности и ее атрибутов;
  • связи, которая является ассоциацией между вышеупомянутыми значениями.

Сопоставление объектов и отношений происходят разными путями и схемами. К примеру, сущность - это объект реального мира с некоторыми атрибутами. Процесс сопоставления, алгоритм следующий:

  • создать таблицу для каждого объекта;
  • атрибуты должны стать полями таблиц с соответствующими типами данных;
  • объявить первичный ключ.

Отношение - это ассоциация между сущностями. Процесс составления следующий:

  • создать таблицу для отношений;
  • добавить первичные ключи всех участвующих сущностей в качестве полей таблицы с соответствующими типами данных;
  • если отношение имеет какой-либо атрибут, установить каждый атрибут в качестве поля таблицы;
  • объединить первичный ключ, составляющий все остальные для участвующих объектов;
  • указать все ограничения внешнего ключа.

Отображение слабых наборов и иерархических объектов происходит по определенной системе. Прежде всего, необходимо понимать сущностные основы и значений. Слабый набор объектов - это тот, который не имеет никакого первичного ключа, связанного с ним. Процесс отображения следующий:

  • создать таблицу для слабого набора объектов;
  • добавить все атрибуты в схему как поле;
  • указать первичный ключ для идентификации;
  • установить все ограничения внешнего ключа.

Отображение иерархических объектов основано на специализации или обобщении языка реляционной алгебры происходит в виде последовательных сущностей. Алгоритм следующий:

  • создать таблицы для всех объектов более высокого нижнего уровня;
  • добавить первичные ключи;
  • на низком уровне реализовать все другие атрибуты объектов нижнего уровня;
  • объявить первичные ключи таблицы;
  • установить ограничения внешнего ключа.

Существующие варианты для описания, хранения, изменения информации

SQL - это язык программирования для реляционных баз данных. Он разработан над алгеброй и корреляционным исчислением кортежей. SQL поставляется в виде пакета со всеми основными дистрибутивами СУБД. Содержит как данные, так и языки манипулирования ими. Используя свойства определения данных SQL реляционной алгебры, можно спроектировать и изменить схему базы, тогда как свойства управления и корректировки, а также изменения данных позволяют хранить и извлекать установленную в систему информацию. Использует следующий набор команд для определения структуры и системы:

  • создает новые таблицы и представления из СУБД.
  • выбрасывает команды.
  • изменяет схему базы данных.
  • эта команда добавляет атрибут в объект типа string.

SQL оснащен языком манипулирования данными (DML). Он изменяет экземпляр базы, вставляя, обновляя и удаляя информацию. DML отвечает за изменение всех данных. SQL содержит следующий набор команд в разделе DML:

  1. SELECT - это одна из основных команд запроса. Он аналогичен проекционной операции реляционной алгебры. Он выбирает атрибуты на основе условия, описанного в приложении WHERE.
  2. FROM - этот раздел принимает имя в качестве аргумента, из которого атрибуты должны быть выбраны/спроецированы. В случае если дано более одного названия, этот пункт соответствует декартовому произведению.
  3. WHERE - этот раздел определяет предикат или условия, которые должны соответствовать, чтобы квалифицировать проецирующийся атрибут.

Существуют также команды:

  • вставка;
  • изменение значений;
  • удаление.

Создание запросов реляционной алгебры

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

Для большинства операторов порядок запросов и их выполнения не имеет значения, а это означает, что один и тот же вывод может быть достигнут путем формирования и комбинирования промежуточных данных по-разному. На практике поиски в базе довольно легки. Система выполнения операций и промежуточных результатов определяется оптимизатором запросов. При формировании вопросов, требований нужно
сначала выбрать, какие отношения необходимы для достижения ответа, а затем указать операции и промежуточные результаты. Структура запроса реляционной алгебры в базе данных с результатами может быть представлена ​​в виде диаграммы. Оптимизаторы требований пытаются организовать максимально эффективное выполнение. На практике это обычно означает, что они стараются как можно быстрее минимизировать промежуточные результаты. В этом помогут распространенные примеры реляционной алгебры.

Информация об автомобилях модели 1996 года, где в ходе инспекции на 1999 год обнаружены недостатки.

Сначала выводится информация о машинах, чтобы понимать значения всех атрибутов отношения. Информация об инспекциях хранится в таблице «Проверка», и, если обнаружены неисправности, они регистрируются в таблице «Проблема». Таким образом, нужны эти три таблицы, чтобы получить нужную информацию.

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

Таким образом, нужны только строки, которые охватывают этот период. Необходимо использовать выделение для их извлечения. Теперь есть автомобили и инспекции, которые требовались. Затем строки соединяются с помощью операции объединения. К ним должен быть подключен общий номер регистра, поскольку он является единственным общим столбцом, используется естественное соединение.

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

Варианты исчислений без промежуточных результатов

Необходимая информация: Имя водителя для модельного года 1995 года или более старые автомобили, которые не были проверены на 2000 год. Имя находится в таблице "Водитель". Правоохранительные органы описаны в таблице «Инспекция и автомобили в столовой машине». Таким образом, нужны эти три таблицы. Во-первых, необходимо узнать автомобили, которые не были осмотрены на 2000 год. Невозможно решить эту проблему, используя только инспекцию, указанную в таблице, поскольку она содержит данные об этих проверках, которые были сделаны, а не о тех, что не были реализованы. Эта проблема решается путем поиска дополняющих автомобилей, которые проверяются до 2000 года. На самом деле нужны только их регистрационные номера.

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

Где закреплена и защищена информация

Алгебры хранится в форматах файлов, содержащих записи. На физическом уровне фактическая информация закреплена в электромагнитном формате на каком-либо устройстве. Эти устройства хранения могут быть разделены на три категории:

  1. Первичное. К этой категории относится память, которая напрямую доступна для ЦП. Регистры, быстрая память (кэш) и основная (ОЗУ) напрямую доступны для центральной, так как все они размещены на материнской плате или чипсете. Это хранилище, как правило, очень маленькое, сверхбыстрое и неустойчивое. Для поддержания состояния требуется постоянный источник питания. В случае сбоя все его данные теряются.
  2. Вторичное. Используется для хранения информации для будущего использования или резервного копирования. Включает в себя устройства памяти, которые не являются частью чипсета или материнской платы процессора, например магнитные диски, оптические диски (DVD, CD и т. д.), жесткие диски, флэш-накопители и магнитные ленты.
  3. Третичное. Используется для хранения огромных объемов данных. Поскольку такие запоминающие устройства являются внешними по отношению к компьютерной системе, они являются самыми медленными по скорости. Эти гаджеты хранения в основном используются для резервного копирования всей системы. Оптические диски и магнитные ленты широко используются в качестве третичного хранилища.

Для эффективности запроса важны специальные операции реляционной алгебры.

Структура хранения

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

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

Магнитные и жесткие диски являются наиболее распространенными вторичными устройствами хранения в современных компьютерных системах. Они называются магнитными, состоят из металлической основы. Эти диски размещаются вертикально на шпинделе. Головка чтения/записи перемещается между ними и используется для намагничивания или снятия такого пятна под ним. Его можно распознать как 0 (ноль) или 1 (один).

Жесткие диски отформатированы в четко определенном порядке для эффективного хранения данных. На нем много концентрических кругов, называемых дорожками. Каждый трек далее разделяется на сектора, где обычно хранится 512 байт данных.

Файловые операции

Операции над системой языка реляционной алгебры и ее базы данных можно в целом классифицировать по двум категориям:

  • обновление;
  • поиск.

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

  1. Открыть - существует в одном из двух режимов чтения или записи. В первом случае операционная система не позволяет никому изменять данные. Другими словами, данные только считываются. Файлы, открытые в режиме чтения, могут совместно использоваться несколькими объектами. Режим записи позволяет изменять данные. Файлы могут быть прочитаны, но не могут использоваться совместно.
  2. Закрыть - это самая важная операция с точки зрения операционной системы, так как она удаляет все блокировки (если в режиме общего доступа), сохраняет данные (если они изменены) на вторичный носитель и освобождает все буферы и обработчики, связанные с файлом.
  3. Индексирование - это метод структуры информации для эффективного извлечения записей из файлов системы на основе некоторых атрибутов, где была выполнена эта система. Определяется на основе атрибутов.

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

  1. Первичный определяется в файле упорядоченных данных. Файл информации упорядочен в ключевом поле.
  2. Вторичный индекс сгенерирован из поля, которое является ключом-кандидатом, и имеет уникальное значение в каждой записи или не ключ с повторяющимися значениями.
  3. Кластеризация определяется в упорядоченном файле данных, в не ключевом поле.

Система управления базами данных или СУБД относится к технологии хранения и извлечения информации пользователей с максимальной эффективностью наряду с соответствующими мерами безопасности. Детальное рассмотрение этого вопроса приводит к выводу, что реляционная алгебра является языком операторов, которые применяют отношения в качестве аргументов и возвращают их в результате.

Добавить - внести запись в БД и, в зависимости от режима включения, либо включить ее в групповое отношение, где она объявлена подчиненной, либо не включать ни в какое групповое отношение.
Включить в групповое отношение - связать существующую подчиненную запись с записью-владельцем.
Переключить - связать существующую подчиненную запись с другой записью-владельцем в том же групповом отношении.
Обновить - изменить значение элементов предварительно извлеченной записи.
Извлечь - извлечь записи последовательно по значению ключа, а также используя групповые отношения - от владельца можно перейти к записям - членам, а от подчиненной записи к владельцу набора.
Удалить - убрать из БД запись. Если эта запись является владельцем группового отношения, то анализируется класс членства подчиненных записей. Обязательные члены должны быть предварительно исключены из группового отношения, фиксированные удалены вместе с владельцем, необязательные останутся в БД.
Исключить из группового отношения - разорвать связь между записью-владельцем и записью-членом.

Реляционная модель базы данных

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

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

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

Объектно-ориентированная модель.

В объектно-ориентированных базах данных, в отличие от реляционных, хранятся не записи, а объекты (текст, аудио- и видеоинформация, документы и другие объекты). Также важна задача сохранения состояния объектов между повторными запусками прикладной программы. Однако, развитого математического аппарата, на который могла бы опираться общая объектно-ориентированная модель данных , не существует.

Большинство ООСУБД представляют собой библиотеку, процедуры управления данными которой включаются в прикладную программу. Несмотря на преимущества объектно-ориентированных систем - реализация сложных типов данных , связь с языками программирования и т.п. - на ближайшее время превосходство реляционных СУБД гарантировано.

Объектно-реляционные СУБД

Разница между объектно-реляционными и объектными СУБД : первые являют собой надстройку над реляционной схемой, вторые же изначально объектно-ориентированы. Главная особенность и отличие объектно-реляционных (как и объектных) СУБД от реляционных заключается в том, что ОРСУБД интегрированы с Объектно-Ориентированным (OO) языком программирования, внутренним или внешним как C++, Java .

Объектно-реляционными СУБД являются, например, широко известные Oracle Database , Microsoft SQL Server , PostgreSQL, Microsoft Access.

Реляционный подход к построению модели предметной области.

· предметная область моделируется совокупностью отдельных информационных объектов (сущностей), каждый из которых описывается своей двумерной таблицей;

· между таблицами существуют связи;

· каждый элемент таблицы - один элемент данных;

· все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковый тип (числовой, символьный и т.д.) и длину;

· каждый столбец описывает один атрибут сущности;

· каждый столбец имеет уникальное имя;

· строка содержит значения атрибутов для одного экземпляра сущности;

· одинаковые строки в таблице отсутствуют (наличие первичного ключа);

· порядок следования строк и столбцов может быть произвольным.

Нормализация отношений - формальный аппарат ограничений на формирование отношений (таблиц), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение (ввод, корректировку) базы данных.

Первая нормальная форма

Отношение (таблица) называется нормализованным или приведенным к первой нормальной форме , если все его атрибуты простые (далее неделимы).

Преобразование отношения к первой нормальной форме может привести к увеличению количества реквизитов (полей) отношения и изменению ключа.

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

· таблица должна содержать данные об одном типе объектов;

· каждая таблица должна содержать одно поле или несколько полей, образующих уникальный идентификатор (или первичный ключ) для каждой строки;

· все неключевые поля должны определяться полным уникальным идентификатором данной таблицы.

Третья нормальная форма

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

Типы связей. Свойства отношений

· Отношение "один-к-одному" (1:1) означает, что каждая запись в одной таблице соответствует не более чем одной записи в другой таблице.

· Отношение "один-ко-многим" (1:М) означает, что каждой записи в одной таблице соответствует 0 или 1 или несколько записей в другой таблице.

· Отношение "многие-к-одному" (М:1) аналогично рассмотренному ранее типу "один-ко-многим". Тип отношения между объектами зависит от точки зрения.

· Отношение "многие-ко-многим" (М:М). возникает между двумя таблицами тогда, когда каждой записи в одной таблице соответствует 0 или более записей в другой таблице и наоборот.

Простые и составные ключи

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

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

Такой первичный ключ называют составным ключом

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

Рассмотренный иерархический и сетевой пример базы данных , содержащей сведения о подразделениях предприятия и работающих в них сотрудниках, применительно к реляционной модели будет иметь вид:

Связь "многие-ко-многим " реализуется через дополнительную таблицу, с помощью которой эта связь будет сведена к двум связям типа "один-ко-многим ".

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

Так что если вы собираетесь начать свое обучение в этой области или вам просто стало интересно, прошу под кат.

Реляционная база данных

Для начала введем понятие реляцинной базы данных, в которой будем выполнять все действия.

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

Таблица PRODUCTS

ID NAME COMPANY PRICE
123 Печеньки ООО ”Темная сторона” 190
156 Чай ООО ”Темная сторона” 60
235 Ананасы ОАО ”Фрукты” 100
623 Томаты ООО ”Овощи” 130

Таблица состоит из 4х строк, строка в таблице является кортежем в реляционной теории. Множество упорядоченных кортежей называется отношением.
Перед тем как дать определение отношения, введем еще один термин - домен. Домены применительно к таблице это столбцы.

Для ясности, теперь введем строгое определение отношения.

Пусть даны N множеств D1,D2, …. Dn (домены), отношением R над этими множествами называется множество упорядоченных N-кортежей вида , где d1 принадлежит D1 и тд. Множества D1,D2,..Dn называются доменами отношения R.
Каждый элемент кортежа представляет собой значение одного из атрибутов, соответствующего одному из доменов.

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

Таблица DRIVERS

Видно, что в организации может быть несколько водителей, и чтобы однозначно идентифицировать водителя необходимо и значение из столбца “Название организации” и из “Имя водителя”. Такой ключ называется составным.

В реляционной БД таблицы взаимосвязаны и соотносятся друг с другом как главные и подчиненные. Связь главной и подчиненнной таблицы осуществляется через первичный ключ (primary key) главной таблицы и внешний ключ (foreign key) подчиненной таблицы.
Внешний ключ это атрибут или набор атрибутов, который в главной таблице является первичным ключем.

Этой подготовительной теории будет достаточно для знакомства с основными операциями реляционной алгебры.

Операции реляционной алгебры

Основные восемь операций реляционной алгебры были предложены Э.Коддом .
  • Объединение
  • Пересечение
  • Вычитание
  • Декартово произведение
  • Выборка
  • Проекция
  • Соединение
  • Деление
Первая половина операций аналогична таким же операциям над множествами. Часть операций можно выразить через другие операции. Рассмотрим большую часть операций с примерами.

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

Таблица SELLERS

ID SELLER
123 OOO “Дарт”
156 ОАО ”Ведро”
235 ЗАО “Овоще База”
623 ОАО ”Фирма”

Условимся, что в этой таблице ID это внешний ключ, связанный с первичным ключом таблицы PRODUCTS.

Для начала рассмотрим самую простую операцию - имя отношения. Её результатом будет такое же отношение, то есть выполнив операцию PRODUCTS, мы получим копию отношения PRODUCTS.

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

Синтаксис операции:
π (ID, PRICE) PRODUCTS

В условии выборки мы можем использовать любое логическое выражение. Сделаем еще одну выборку с ценой больше 90 и ID товара меньше 300:

σ (PRICE>90 ^ ID<300) PRODUCTS

Умножение
Умножение или декартово произведение является операцией, производимой над двумя отношениями, в результате которой мы получаем отношение со всеми доменами из двух начальных отношений. Кортежи в этих доменах будут представлять из себя все возможные сочетания кортежей из начальных отношений. На примере будет понятнее.

Получим декартово произведения таблиц PRODUCTS и SELLERS.
Синтаксис операции:

PRODUCTS × SELLERS
Можно заметить, что у двух этих таблиц есть одинаковый домен ID. В подобной ситуации домены с одинаковыми названиями получают префикс в виде названия соответствующего отношения, как показано ниже.
Для краткости перемножим не полные отношения, а выборки с условием ID<235

(цветом выделены одни и те же кортежи)

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро”
123 Печеньки ООО ”Темная сторона” 190 156 ОАО ”Ведро”
156 Чай ООО ”Темная сторона” 60 123 OOO “Дарт”

Для примера использования этой операции представим себе необходимость выбрать продавцов с ценами меньше 90. Без произведения необходимо было бы сначала получить ID продуктов из первой таблицы, потом по этим ID из второй таблицы получить нужные имена SELLER, а с использованием произведения будет такой запрос:

π (SELLER) σ (RODUCTS.ID=SELLERS.ID ^ PRICE<90) PRODUCTS × SELLERS

В результате этой операции получим отношение:

SELLER
ОАО ”Ведро”
Соединение и естественное соединение
Операция соединения обратна операции проекции и создает новое отношение из двух уже существующих. Новое отношение получается конкатенацией кортежей первого и второго отношений, при этом конкатенации подвергаются отношения, в которых совпадают значения заданных атрибутов. В частности, если соединить отношения PRODUCTS и SELLERS, этими атрибутами будут атрибуты доменов ID.

Также для понятности можно представить соеднинение как результат двух операций. Сначала берется произведение исходных таблиц, а потом из полученного отношения мы делаем выборку с условием равенства атрибутов из одинаковых доменов. В данном случае условием явлется равенство PRODUCTS.ID и SELLERS.ID.

Попробуем соединить отношения PRODUCTS и SELLERS и получим отношение.

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро”
235 Ананасы ОАО ”Фрукты” 100 235 ЗАО “Овоще База”
623 Томаты ООО ”Овощи” 130 623 ОАО ”Фирма”

Натуральное соединение получает схожее отношение, но в случае, если у нас корректно настроена схема в базе (в данном случае первичный ключ таблицы PRODUCTS ID связан с внешним ключем таблицы SELLERS ID), то в результирующем отношении остается один домен ID.

Синтаксис операции:
PRODUCTS ⋈ SELLERS;

Получится такое отношение:

PRODUCTS.ID NAME COMPANY PRICE SELLER
123 Печеньки ООО ”Темная сторона” 190 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 ОАО ”Ведро”
235 Ананасы ОАО ”Фрукты” 100 ЗАО “Овоще База”
623 Томаты ООО ”Овощи” 130 ОАО ”Фирма”
Пересечение и вычитание.
Результатом операции пересечения будет отношение, состоящее из кортежей, полностью входящих в состав обоих отношений.
Результатом вычитания будет отношение, состоящее из кортежей, которые являются кортежами первого отношения и не являются кортежами второго отношения.
Данные операции аналогичны таким же операциям над множествам, так что, я думаю, нет необходимости подробно их расписывать.
Источники информации
  • Основы использования и проектирования баз данных - В. М. Илюшечкин
  • курс лекций Introduction to Databases - Jennifer Widom, Stanford University

Буду благодарен за аргументированные замечания

Реляционная алгебра - это язык операций, выполняемых над отношениями - таблицами реляционной базы данных. Операции реляционной алгебры позволяют на основе одного или нескольких отношений создавать другое отношение без изменения самих исходных отношений. Полученное другое отношение обычно не записывается в базу данных, а существует в результате выполнения SQL-запроса - массиве, создаваемом функциями для работы с базами данных в языках программирования. Для каждой операции реляционной алгебры будет дана её реализация в виде запросов на языке SQL.

Рассмотрим операции реляционной алгебры. Чтобы Вам не отвлекаться на содержание таблиц не Ваших баз данных, таких как "Продукты", "Водители", "сливы", "груши", "чай", "кофе", Владимиры, Сергеи и т.п. будем выполнять операции над отношениями (таблицами) с абстрактными данными, такими как R1, R2 (названия таблиц - отношений) и т.д. и А1, А2, А3 (названия атрибутов - столбцов) и h15, w11 и т.п. (содержание записей таблиц базы данных).

Приоритеты выполнения операций реляционной алгебры (в порядке убывания пунктов списка, а в одном пункте - операции с равными приоритетами):

  • селекция, проекция
  • декартово произведение, соединение, пересечение, деление
  • объединение, разность.

Операция выборки

Операция выборки работает с одним отношением и определяет результирующее отношение R , которое содержит только те кортежи (или строки, или записи), отношения , которые удовлетворяют заданному условию (предикату P ).

Таким образом, операция выборки - унарная операция - и записывается следующим образом:

где P - предикат (логическое условие).

Запрос SQL

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

R3
A1 A2 A3 A4
3 hh yl ms
4 pp a1 sr
1 rr yl ms

Просматриваем столбец А3 и устанавливаем, что предикату A3>"d0" удовлетворяют записи в первой и третьей строках исходного отношения (так как номер буквы y в алфавите больше номера буквы d). В результате получаем следующее новое отношение, в котором две строки:

R
A1 A2 A3 A4
3 hh yl ms
1 rr yl ms

Комбинировать всевозможные логические условия для выборок Вам поможет материал "Булева алгебра (алгебра логики)" .

Запрос SQL

SELECT A1, A2, A3 from R1 UNION SELECT A1, A2, A3 from R2

Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Теперь даны два отношения, так как операция объединения - бинарная операция:

R1 R2
A1 A2 A3 A1 A2 A3
Z7 aa w11 X8 pp k21
B7 hh h15 Q2 ee h15
X8 pp w11 X8 pp w11

Объединяем строки первого и второго отношения и видим, что третья строка, которая является третьей и в первом, и во втором отношении - идентичны, поэтому её включаем в новое отношение только один раз. Получаем следующее отношение:

R
A1 A2 A3
Z7 aa w11
B7 hh h15
X8 pp w11
X8 pp k21
Q2 ee h15

Важно следующее: операция объединения может быть выполнена только тогда, когда два отношения обладают одинаковым числом и названиями атрибутов (столбцов), или, говоря формально, совместимы по объединению.

Операция пересечения

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

Запрос SQL

SELECT A1, A2, A3 from R1 INTERSECT SELECT A1, A2, A3 from R2

В некоторых диалектах SQL отсутствует ключевое слово INTERSECT. Его заменой, например, в MySQL и других, является INNER JOIN. О том, как работает оператор SQL JOIN вообще и его разновидности INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN и FULL OUTER JOIN - на уроке SQL JOIN - соединение таблиц базы данных .

Запрос MySQL

Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:

R1 R2
A1 A2 A3 A1 A2 A3
Z7 aa w11 X8 pp k21
B7 hh h15 Q2 ee h15
X8 pp w11 X8 pp w11

Просматриваем все записи в двух отношениях, и обнаруживаем, что и в первом, и во втором отношении есть одна строка - та, которая является третьей и в первом, и во втором отношении. Получаем новое отношение:

R
A1 A2 A3
X8 pp w11

Операция разности

Разность двух отношений R1 и R2 () состоит из кортежей (или записей, или строк), которые имеются в отношении R1, но отсутствуют в отношении R2. Отношения R1 и R2 должны быть совместимы по объединению. Операция разности реляционной алгебры идентична операции .

Запрос SQL

SELECT A1, A2, A3 from R2 EXCEPT
SELECT A1, A2, A3 from R1

Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:

R1 R2
A1 A2 A3 A1 A2 A3
Z7 aa w11 X8 pp k21
B7 hh h15 Q2 ee h15
X8 pp w11 X8 pp w11

Из отношения R2 исключаем строку, которая есть также в отношении R2 - третью - и получаем новое отношение:

R
A1 A2 A3
X8 pp w11
Q2 ee h15

Операция декартова произведения

Операция декартова произведения () определяет новое отношение R, которое является результатом конкатенации каждого кортежа отношения R1 с каждым кортежем отношения R2.

Запрос SQL

SELECT * from R3, R4

Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4:

R3 R4
A1 A2 A3 A4 A5 A6
3 hh yl ms 3 hh
4 pp a1 sr 4 pp
1 rr yl ms

В новом отношении должны присутствовать все атрибуты (столбцы) двух отношений. Сначала первая строка отношения R3 сцепляется с каждой из двух строк отношения R4, затем вторая строка отношения R3, затем третья. В результате должно получиться 3 Х 2 = 6 кортежей (строк). Получаем такое новое отношение:

R
A1 A2 A3 A4 A5 A6
3 hh yl ms 3 hh
3 hh yl ms 4 pp
4 pp a1 sr 3 hh
4 pp a1 sr 4 pp
1 rr yl ms 3 hh
1 rr yl ms 4 pp