Введение в системы управления базами данных

         

Экви-соединение



Экви-соединение

Наиболее важным частным случаем Введение в системы управления базами данных
Экви-соединение есть просто равенство.

Синтаксис экви-соединения:

Введение в системы управления базами данных



Кросс-таблицы



Кросс-таблицы

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

Пусть имеется отношение с тремя атрибутами и потенциальным ключом, включающим первые два атрибута.

Невыразимость транзитивного замыкания реляционными операторами



Невыразимость транзитивного замыкания реляционными операторами

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



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



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

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

В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни реляционная алгебра, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SQL (Structured Query Language). Язык SQL представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении. Вообще, язык доступа к данным называется реляционно полным, если он по выразительной силе не уступает реляционной алгебре (или, что то же самое, реляционному исчислению), т.е. любой оператор реляционной алгебры может быть выражен средствами этого языка. Именно таким и является язык SQL.

В данной главе будут рассмотрены основы реляционной алгебры.

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



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

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

Оператор деления



Оператор деления

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

Введение в системы управления базами данных

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

Оператор переименования атрибутов



Оператор переименования атрибутов

Оператор переименования атрибутов имеет следующий синтаксис:

Введение в системы управления базами данных

где

Введение в системы управления базами данных

Введение в системы управления базами данных

Введение в системы управления базами данных

В результате применения оператора переименования атрибутов получаем новое отношение, с измененными именами атрибутов.



Оператор пересечения



Оператор пересечения

Оператор пересечения выражается через вычитание следующим образом:

Введение в системы управления базами данных

Оператор проекции



Оператор проекции

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

Оператор соединения



Оператор соединения

Оператор соединения определяется через операторы декартового произведения и выборки. Для оператора естественного соединения добавляется оператор проекции.

Оператор выборки



Оператор выборки

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

Операторы объединения и вычитания



Операторы объединения и вычитания

Доказательство примитивности операторов объединения и вычитания более сложны и мы их здесь не приводим.

если они имеют идентичные заголовки,



Определение 1

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

двух совместимых по типу отношений



Определение 2

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

двух совместимых по типу отношений



Определение 3

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

двух совместимых по типу отношений



Определение 4

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

называется отношение, заголовок которого является



Определение 5

. Декартовым произведением двух отношений Введение в системы управления базами данных
Определение 5 называется отношение, заголовок которого является сцеплением заголовков отношений Введение в системы управления базами данных
Определение 5:

Введение в системы управления базами данных
а тело состоит из кортежей, являющихся сцеплением кортежей отношений Введение в системы управления базами данных
Определение 5:

Введение в системы управления базами данных
таких, что Введение в системы управления базами данных
Определение 5. Синтаксис операции декартового произведения: Введение в системы управления базами данных
Замечание. Мощность произведения Введение в системы управления базами данных
Определение 5 и Введение в системы управления базами данных
Определение 5 соединяется с каждым кортежем отношения Введение в системы управления базами данных
Замечание. Если в отношения Введение в системы управления базами данных
Определение 5 имеются атрибуты с одинаковыми наименованиями, то перед выполнением операции декартового произведения такие атрибуты необходимо переименовать. Замечание. Перемножать можно любые два отношения, совместимость по типу при этом не требуется.

с тем же заголовком, что



Определение 6

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

где каждый из атрибутов принадлежит



Определение 7

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

Таким образом, операция соединения есть



Определение 8

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

Это частный случай операции общего



Определение 9

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

Естественное соединение настолько важно, что



Определение 10

. Пусть даны отношения Введение в системы управления базами данных
Определение 10, имеющие одинаковые атрибуты Введение в системы управления базами данных
Тогда естественным соединением отношений Введение в системы управления базами данных
Определение 10 называется отношение с заголовком Введение в системы управления базами данных
Определение 10, таких, что Введение в системы управления базами данных
Определение 10. Естественное соединение настолько важно, что для него используют специальный синтаксис: Введение в системы управления базами данных
Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам. Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций: Переименовать одинаковые атрибуты в отношениях Выполнить декартово произведение отношений Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена Выполнить проекцию, удалив повторяющиеся атрибуты Переименовать атрибуты, вернув им первоначальные имена Замечание. Можно выполнять последовательное естественное соединение нескольких отношений. Нетрудно проверить, что естественное соединение (как, впрочем, и соединение общего вида) обладает свойством ассоциативности, т.е. Введение в системы управления базами данных
поэтому такие соединения можно записывать, опуская скобки: Введение в системы управления базами данных

Деление отношений аналогично делению чисел



Определение 11

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

Отношения, совместимые по типу



Отношения, совместимые по типу

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



Плохая нормализация отношений



Плохая нормализация отношений

Данный пример взят из книги Гилуа М.М. [6, стр.43].



Следующий оператор возвращает неименованное отношение,



Пример 1

. Следующий оператор возвращает неименованное отношение, в котором атрибут Введение в системы управления базами данных
Пример 1: Введение в системы управления базами данных

Пусть даны два отношения



Пример 2

. Пусть даны два отношения Введение в системы управления базами данных
Пример 2 с информацией о сотрудниках:

в предыдущем примере пересечение имеет



Пример 3

. Для тех же отношений Введение в системы управления базами данных
Пример 3, что и в предыдущем примере пересечение имеет вид:

в предыдущем примере вычитание имеет



Пример 4

. Для тех же отношений Введение в системы управления базами данных
Пример 4, что и в предыдущем примере вычитание имеет вид:

Пусть даны два отношения



Пример 5

. Пусть даны два отношения Введение в системы управления базами данных
Пример 5 с информацией о поставщиках и деталях:

Пусть дано отношение



Пример 6

. Пусть дано отношение Введение в системы управления базами данных

Пусть дано отношение



Пример 7

. Пусть дано отношение Введение в системы управления базами данных

и поставляемых деталях. Пусть поставщикам



Пример 8

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

Пусть имеются отношения



Пример 9

. Пусть имеются отношения Введение в системы управления базами данных
Пример 9 и Введение в системы управления базами данных

В предыдущем примере ответ на



Пример 10

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

и поставками ответим на вопрос,



Пример 11

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

Получить имена поставщиков, поставляющих по



Пример 13

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

Получить имена поставщиков, поставляющих все



Пример 14

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

Получить имена поставщиков, не поставляющих



Пример 15

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

являются наименования химических веществ, значениями



Пример 16

. Пусть имеется отношение ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ с набором атрибутов (Наименование вещества, Водород, Гелий, …, 105_элемент). Значением атрибута "Вещество" являются наименования химических веществ, значениями остальных атрибутов - процентный состав соответствующих элементов в этом веществе. Такое отношение могло бы иметь, к примеру, следующий вид:

Рассмотрим отношение, описывающее сотрудников некоего



Пример 17

. Рассмотрим отношение, описывающее сотрудников некоего предприятия. Отношение содержит данные о табельном номере сотрудника, фамилии, должности и табельном номере руководителя сотрудника – СОТРУДНИКИ (ТАБ_НОМ, ФАМИЛИЯ, ДОЛЖНОСТЬ, ТАБ_НОМ_РУК):

Примером такого отношения могут быть



Примером такого отношения могут быть данные с объемами продаж различных товаров за некоторые промежутки времени:

Получить имена поставщиков, поставляющих деталь


. Получить имена поставщиков, поставляющих деталь номер 2.Решение: Введение в системы управления базами данных

Примитивные реляционные операторы



Примитивные реляционные операторы

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

Соединение



Соединение

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

Обычно рассматривается несколько разновидностей операции соединения: Общая операция соединения Введение в системы управления базами данных
Экви-соединение Естественное соединение

Наиболее важным из этих частных случаев является операция естественного соединения. Все разновидности соединения являются частными случаями общей операции соединения.

Отношение A



Таблица 1

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000
3 Сидоров 3000

Таблица 1 Отношение A

Отношение BОбъединение отношений



Таблица 2

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Пушников 2500
4 Сидоров 3000

Таблица 2 Отношение BОбъединение отношений Введение в системы управления базами данных
Таблица 2 будет иметь вид:

Как видно из приведенного примера,



Таблица 3

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000
3 Сидоров 3000
2 Пушников 2500
4 Сидоров 3000

Таблица 3 Отношение A UNION BЗамечание. Как видно из приведенного примера, потенциальные ключи, которые были в отношениях Введение в системы управления базами данных
Таблица 3 не наследуются объединением этих отношений. Поэтому, в объединении отношений Введение в системы управления базами данных
Таблица 3 атрибут "Табельный номер" может содержать дубликаты значений. Если бы это было не так, и ключи наследовались бы, то это противоречило бы понятию объединения как "объединение множеств". Конечно, объединение отношений Введение в системы управления базами данных
Таблица 3 имеет, как и любое отношение, потенциальный ключ, например, состоящий из всех атрибутов.

в отличие от операции объединения,



Таблица 4

Табельный номер Фамилия Зарплата
1 Иванов 1000

Таблица 4 Отношение A INTERSECT BЗамечание. Казалось бы, что в отличие от операции объединения, потенциальные ключи могли бы наследоваться пересечением отношений. Однако это не так. Вообще, никакие реляционные операторы не передают результатирующему отношению никаких данных о потенциальных ключах. В качестве причины этого можно было бы привести тривиальное соображение, что так получается более просто и симметрично - все операторы устроены одинаково. На самом деле причина более глубока, и заключается в том, что потенциальный ключ - семантическое понятие, отражающее различимость объектов предметной области. Наличие потенциальных ключей не выводится из структуры отношения, а явно задается для каждого отношения, исходя из его смысла. Реляционные же операторы являются формальными операциями над отношениями и выполняются одинаково, независимо от смысла данных, содержащихся в отношениях. Поэтому, реляционные операторы ничего не могут "знать" о смысле данных. Трактовка результата реляционных операций - дело пользователя.

Отношение A MINUS B



Таблица 5

Табельный номер Фамилия Зарплата
2 Петров 2000
3 Сидоров 3000

Таблица 5 Отношение A MINUS B

Отношение A (Поставщики)



Таблица 6

Номер поставщика Наименование поставщика
1 Иванов
2 Петров
3 Сидоров

Таблица 6 Отношение A (Поставщики)

Декартово произведение отношений



Таблица 7

Номер детали Наименование детали
1 Болт
2 Гайка
3 Винт

Таблица 7 Отношение B (Детали) Декартово произведение отношений Введение в системы управления базами данных
Таблица 7 будет иметь вид:

Сама по себе операция декартового



Таблица 8

Номер поставщика Наименование поставщика Номер детали Наименование детали
1 Иванов 1 Болт
1 Иванов 2 Гайка
1 Иванов 3 Винт
2 Петров 1 Болт
2 Петров 2 Гайка
2 Петров 3 Винт
3 Сидоров 1 Болт
3 Сидоров 2 Гайка
3 Сидоров 3 Винт

Таблица 8 Отношение A TIMES BЗамечание. Сама по себе операция декартового произведения не очень важна, т.к. она не дает никакой новой информации, по сравнению с исходными отношениями. Для реальных запросов эта операция почти никогда не используется. Однако операция декартового произведения важна для выполнения специальных реляционных операций, о которых речь пойдет ниже.

Результат выборки



Таблица 9

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000
3 Сидоров 3000

Таблица 9 Отношение A Результат выборки Введение в системы управления базами данных

выбрать кортежи отношения, удовлетворяющие некоторому



Таблица 10

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000

Таблица 10 Отношение A WHERE Зарплата<3000Смысл операции выборки очевиден - выбрать кортежи отношения, удовлетворяющие некоторому условию. Таким образом, операция выборки дает "горизонтальный срез" отношения по некоторому условию.

center> Таблица



Таблица 11

Номер поставщика Наименование поставщика Город поставщика
1 Иванов Уфа
2 Петров Москва
3 Сидоров Москва
4 Сидоров Челябинск

Таблица 11 Отношение A (Поставщики) Проекция Введение в системы управления базами данных

center> Таблица



Таблица 12

Город поставщика
Уфа
Москва
Челябинск

Таблица 12 Отношение A[Город поставщика]

center> Таблица



Таблица 13

Номер поставщика Наименование поставщика X

(Статус поставщика)

1 Иванов 4
2 Петров 1
3 Сидоров 2

Таблица 13 Отношение A (Поставщики)

какие поставщики имеют право поставлять



Таблица 14

Номер детали Наименование детали Y

(Статус детали)

1 Болт 3
2 Гайка 2
3 Винт 1

Таблица 14 Отношение B (Детали) Ответ на вопрос " какие поставщики имеют право поставлять какие детали?" дает Введение в системы управления базами данных
Таблица 14:

Какие поставщики поставляют какие



Таблица 15

Номер поставщика Наименование поставщика X

(Статус поставщика) Номер детали Наименование детали Y

(Статус детали)

1 Иванов 4 1 Болт 3
1 Иванов 4 2 Гайка 2
1 Иванов 4 3 Винт 1
2 Петров 1 3 Винт 1
3 Сидоров 2 2 Гайка 2
3 Сидоров 2 3 Винт 1

Таблица 15 Отношение " Какие поставщики поставляют какие детали"

center> Таблица



Таблица 16

Номер поставщика

PNUM Наименование поставщика

PNAME

1 Иванов
2 Петров
3 Сидоров

Таблица 16 Отношение P (Поставщики)

center> Таблица



Таблица 17

Номер детали

DNUM Наименование детали

DNAME

1 Болт
2 Гайка
3 Винт

Таблица 17 Отношение D (Детали)

Ответ на вопрос, какие детали



Таблица 18

Номер поставщика

PNUM Номер детали

DNUM Поставляемое количество

VOLUME

1 1 100
1 2 200
1 3 300
2 1 150
2 2 250
3 1 1000

Таблица 18 Отношение PD (Поставки) Ответ на вопрос, какие детали поставляются поставщиками, дает экви-соединение Введение в системы управления базами данных

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

соединения является то, что если



Таблица 19

Номер поставщика

PNUM1 Наименование поставщика

PNAME Номер поставщика

PNUM2 Номер детали

DNUM Поставляемое количество

VOLUME

1 Иванов 1 1 100
1 Иванов 1 2 200
1 Иванов 1 3 300
2 Петров 2 1 150
2 Петров 2 2 250
3 Сидоров 3 1 1000

Таблица 19 Отношение "Какие детали поставляются какими поставщиками" Недостатком экви- соединения является то, что если соединение происходит по атрибутам с одинаковыми наименованиями (а так чаще всего и происходит!), то в результатирующем отношении появляется два атрибута с одинаковыми значениями. В нашем примере атрибуты PNUM1 и PNUM2 содержат дублирующие данные. Избавиться от этого недостатка можно, взяв проекцию по всем атрибутам, кроме одного из дублирующих. Именно так действует естественное соединение.

P JOIN PD JOIN



Таблица 20

Номер поставщика

PNUM Наименование поставщика

PNAME Номер детали

DNUM Наименование детали

DNAME Поставляемое количество

VOLUME

1 Иванов 1 Болт 100
1 Иванов 2 Гайка 200
1 Иванов 3 Винт 300
2 Петров 1 Болт 150
2 Петров 2 Гайка 250
3 Сидоров 1 Болт 1000

Таблица 20 Отношение P JOIN PD JOIN D

В качестве делителя возьмем проекцию



Таблица 21

Номер поставщика

PNUM Номер детали

DNUM

1 1
1 2
1 3
2 1
2 2
3 1

Таблица 21 Проекция X=PD[PNUM,DNUM] В качестве делителя возьмем проекцию Введение в системы управления базами данных

center> Таблица



Таблица 22

Номер детали

DNUM

1
2
3

Таблица 22 Проекция Y=D[DNUM] Деление Введение в системы управления базами данных

center> Таблица



Таблица 23

Номер поставщика

PNUM

1

Таблица 23 Отношение X DEVIDEBY Y Оказалось, что только поставщик с номером 1 поставляет все детали.

ХИМИЧЕСКИЙ СОСТАВ ВЕЩЕСТВ



Таблица 24

Наименование вещества Водород Гелий … 105 элемент
Дезоксирибону-клеиновая кислота 5 3 0.01
Бензин 50 0 0

Таблица 24 Отношение ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВРассмотрим запрос "Найти все химические элементы, содержание которых в каком-либо из веществ превышает заданный процент (скажем, 90)". С алгоритмической точки зрения этот запрос выполняется элементарно - просматриваются все столбцы таблицы, если в столбце присутствует хотя бы одно значение, большее 90, то запоминается заголовок этого столбца. Набор наименований запомненных столбцов и является ответом на запрос. Формально невозможно выразить этот запрос в рамках реляционной алгебры, т.к. ответом на этот запрос должен быть список атрибутов отношений, удовлетворяющих определенному условию. В реляционной алгебре нет операторов, манипулирующих с наименованиями атрибутов. На самом деле, этот пример показывает, что таблица плохо нормализована (нормализация отношений рассматривается в гл.6 и 7). В таблице есть набор однотипных атрибутов ("Водород", "Гелий" и т.д. в количестве 105 столбцов). Правильнее разбить это отношение на три различных отношения: ВЕЩЕСТВО(НОМ_ВЕЩЕСТВА, ВЕЩЕСТВО), ЭЛЕМЕНТЫ(НОМ_ЭЛЕМЕНТА, ЭЛЕМЕНТ), ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ(НОМ_ВЕЩЕСТВА, НОМ_ЭЛЕМЕНТА, ПРОЦЕНТ).

center> Таблица



Таблица 25

НОМ_ВЕЩЕСТВА ВЕЩЕСТВО
1 Дезоксирибонуклеиновая кислота
2 Бензин

Таблица 25 Отношение ВЕЩЕСТВО

center> Таблица



Таблица 26

НОМ_ЭЛЕМЕНТА ЭЛЕМЕНТ
1 Водород
2 Гелий
105

Таблица 26 Отношение ЭЛЕМЕНТЫ

НОМЕР ВЕЩЕСТВА



Таблица 27

НОМ_ВЕЩЕСТВА НОМ_ЭЛЕМЕНТА ПРОЦЕНТ
1 1 5
1 2 3
1 105 0.01
2 1 50

Таблица 27 Отношение ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВДля отношений, нормализованных таким образом, исходный запрос реализуется следующей последовательностью операторов: R1(НОМЕР_ВЕЩЕСТВА,НОМ_ЭЛЕМЕНТА,ПРОЦЕНТ)= ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ[ПРОЦЕНТ>90]. (Выборка из отношения). R2(НОМ_ЭЛЕМЕНТА) = R1[НОМ_ЭЛЕМЕНТА]. (Проекция отношения). R3(НОМ_ЭЛЕМЕНТА,ЭЛЕМЕНТ)= R2[НОМ_ЭЛЕМЕНТА=НОМ_ЭЛЕМЕНТА]ЭЛЕМЕНТЫ. (Естественное соединение) ОТВЕТ(ЭЛЕМЕНТ) = R3[ЭЛЕМЕНТ]. (Проекция таблицы). На языке SQL такой запрос реализуется одной командой: SELECT ЭЛЕМЕНТЫ.ЭЛЕМЕНТ FROM ЭЛЕМЕНТЫ, ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ WHERE ЭЛЕМЕНТЫ.НОМ_ЭЛЕМЕНТА=ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ.НОМ_ЭЛЕМЕНТА AND ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ.ПРОЦЕНТ>90;

Ответом на запрос может быть



Таблица 28

ТАБ_НОМ ФАМИЛИЯ ДОЛЖНОСТЬ ТАБ_НОМ_РУК
1 Иванов Директор 1
2 Петров Глав.бухгалтер 1
3 Сидоров Бухгалтер 2
4 Васильев Начальник цеха 1
5 Сухов Мастер 4
6 Шарипов Рабочий 5

Таблица 28 Отношение СОТРУДНИКИ Рассмотрим запрос "Перечислить всех руководителей (прямых и непрямых) данного сотрудника". Ответом на запрос может быть получен при помощи понятия транзитивного замыкания. Однако транзитивное замыкание не может быть выражено операторами реляционной алгебры.

Построение кросс- таблицы средствами



Таблица 30

Товар Январь Февраль …
Компьютеры 100 150
Принтеры 200 250
Сканеры 300 350

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

к реляционным данным возможен при



Выводы

Доступ к реляционным данным возможен при помощи операторов реляционной алгебры. Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Реляционная алгебра замкнута таким образом, что результаты одних реляционных выражений можно использовать в других выражениях. Традиционно определяют восемь реляционных операторов, объединенных в две группы. Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение. Специальные реляционные операторы: выборка, проекция, соединение, деление. Для выполнения некоторых реляционных операторов требуется, чтобы отношения были совместимы по типу. Не все операторы реляционной алгебры являются независимыми - некоторые из них выражаются через другие реляционные операторы. Операторы соединения, пересечения и деления можно выразить через другие реляционные операторы, т.е. эти операторы не являются примитивными. Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются примитивными операторами - их нельзя выразить друг через друга. Имеется несколько типов запросов, которые нельзя выразить средствами реляционной алгебры. К ним относятся запросы, требующие дать в ответе список атрибутов, удовлетворяющих определенным условиям, построение транзитивного замыкания отношений, построение кросс-таблиц. Для получения ответов на подобные запросы приходится использовать процедурные расширения реляционных языков.  

Замкнутость реляционной алгебры



Замкнутость реляционной алгебры

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

Введение в системы управления базами данных

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

Введение в системы управления базами данных

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

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

Традиционно, вслед за Коддом [43], определяют восемь реляционных операторов, объединенных в две группы.

Теоретико-множественные операторы: Объединение Пересечение Вычитание Декартово произведение

Специальные реляционные операторы: Выборка Проекция Соединение Деление

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

Запросы, невыразимые средствами реляционной алгебры



Запросы, невыразимые средствами реляционной алгебры

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

Зависимые реляционные операторы



Зависимые реляционные операторы

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