Базы данных
Оценка 4.7

Базы данных

Оценка 4.7
doc
05.05.2020
Базы данных
Тема 3.2 Реляционная алгебра. Языки запросов.doc

Тема 3.2. Реляционная алгебра. Языки запросов

3.2.1. Теоретические языки запросов.

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

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

·         реляционная алгебра;

·         реляционное исчисление.

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

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

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

·         S (поставщики);

·         P (детали);

·         SP (поставки).

S

П#

Имя

Статус

Город_П

S1

Сергей

20

Москва

S2

Иван

10

Киев

S3

Борис

30

Киев

S4

Николай

20

Москва

S5

Андрей

30

Минск

 

 

 

P

Д#

Название

Тип

Вес

Город_Д

Р1

гайка

каленый

12

Москва

Р2

болт

мягкий

17

Киев

Р3

винт

твердый

17

Ростов

Р4

винт

каленый

14

Москва

Р5

палец

твердый

12

Киев

Р6

шпилька

каленый

19

Москва

SP

П#

Д#

Количество

S1

Р1

300

S1

Р2

200

S1

Р3

400

S1

Р4

200

S1

Р5

100

S1

Р6

100

S2

Р1

300

S2

Р2

400

S3

Р2

200

S4

Р2

200

S4

Р4

300

S4

Р5

400

 

Первичными ключами этих таблиц являются соответственно: П# (код поставщика), Д# (код детали) и составной ключ (П#, Д#). Каждое из полей П#, Д# таблицы SP в отдельности является внешним ключом по отношению к таблице S и Р соответственно.

Имена доменов (множество допустимых значений) совпадают с именами атрибутов. исключение составляют атрибуты Город_П и Город_Д, которые имеют общий домен: множество названий городов. Имя этого домена может быть, например, просто Город. характеристики как типов данных следующие: Д# - строка символов длиной 5, Имя – строка символов длиной 20, Статус – цифровое длиной 5, Город – строка символов длиной 15, Д# - строка символов длиной 6, Тип – строка символов длиной 6, Вес – цифровое длиной 5, Количество – цифровое длиной 5.  

3.2.2. Реляционная алгебра.

Реляционная алгебра как теоретический язык запросов по сравнению с реляционным исчислением более наглядно описывает выполняемые над отношениями действий.

Примером языка запросов, основанного на реляционной алгебре, является ISBL (Information System Base Language – базовый язык информационных систем).

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

Рис. 3.1. Основные операции реляционной алгебры

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

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

Совместимость структур отношений означает совместимость имен атрибутов и типов соответствующих доменов.

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

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

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

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

2.      Существуют тождественные преобразования, позволяющие по-разному записывать одно и тоже выражение.

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

Операндами логического выражения являются условные выражения вида a > b, Город = «Москва». Значением условного выражения может быть либо 1, либо 0.

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

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

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

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

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

Словесно алгебраическая версия этого запроса описывается так:

·         образовать естественное соединение отношений S и SP по атрибуту П#;

·         выбрать из результата этого соединения кортежи с деталью Р2 (в поле Д# должна быть строка Р2);

·         спроецировать результат предыдущей операции на атрибуты П# и Город_П.

Этот же запрос в терминах реляционного исчисления можно сформулиро­вать примерно так: «Получить атрибуты П# и Город_П для таких поставщи­ков, для которых существует поставка в отношении SP с тем же значением атрибута П# и со значением Р" атрибута Д#».

Результатом выполнения запроса будет отношение R вида:

П#

Город_П

S1

Москва

S2

Киев

S3

Киев

S4

Москва

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

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

·         выбрать из отношения SP кортежи, относящиеся к детали Р2;

·         выполнить естественное соединение отношения S и отношения, полу­ченного на предыдущем шаге;

·         спроецировать текущее отношение на атрибуты П# и Город_П.

Экономия памяти при реализации этого алгоритма в сравнении с перво­начальным вариантом достигается за счет снижения размерности участвую­щих в операциях временных таблиц, необходимых для хранения промежу­точных результатов. Если в предыдущем случае размерность временной таблицы была 12*6 (12 строк на 6 колонок), то в последнем случае — 4*6.

Математической основой реляционного исчисления является исчисле­ние предикатов — один из разделов математической логики.

Существует два варианта исчислений: исчисление кортежей и исчисле­ние доменов. В первом случае для описания отношений используются пере­менные, допустимыми значениями которых являются кортежи отношения, а во втором случае — элементы домена.

Реляционное исчисление, основанное на кортежах (исчисление кортежей).

3.2.4. Язык запросов по образцу QBE.

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

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

Для подготовки запросов с помощью различных СУБД чаще всего используются два основных языка описания запросов:

·         язык QBE (Query By Example) – язык запросов по образцу;

·         SQL (Structured Query Language) – язык запросов по образцу.

По возможностям манипулирования данными при описании запросов указанные языки практически эквивалентны. Главное отличие между ними заключается в способе формирования запросов: язык QBE предполагает ручное или визуальное формирование запросов, в то время как использование SQL означает программирование запросов.

Характеристика языка QBE

Основой языка QBE является реляционное исчисление с переменными доменами. Язык QBE позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы. Такой способ задания запросов обеспечивает высокую наглядность и не требует указания алгоритма выполнения операции – достаточно описать образец ожидаемого результата. В каждой из современных реляционных СУБД имеется свой вариант языка QBE.

На языке QBE можно задавать запросы однотабличные и многотабличные.

С помощью запросов на языке QBE можно выполнять следующие основные операции:

·         выборку данных;

·         вычисление над данными;

·         вставку новых записей;

·         удаление записей;

·         модификацию данных.

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

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

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

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

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

СЛУЖАЩИЕ

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

 

Киселев В.М.

1800

Белкин Б.Н.

хозтовары

 

Гурский С.И.

1600

Томилов А.Н.

игрушки

 

Андреева Е.А

2000

Петров А.С.

косметика

 

Левин П.Г.

2200

Петров А.С.

канцтовары

 

Носов А.П.

1600

Томилов А.Н.

игрушки

 

Гофман В.Э.

2600

Андреева Е.А

косметика

 

Сорокина Т.В.

1700

Андреева Е.А

косметика

 

Белкин Б.Н.

1800

Петров А.С.

хозтовары

 

Семин С.В.

2200

Левин П.Г.

канцтовары

 

Григорьев А.Н.

1900

Томилов А.Н.

игрушки

 

Томилов А.Н.

2000

Петров А.С.

игрушки

 

ПРОДАЖИ

ОТДЕЛ

ТОВАР

 

ПОСТАВЩИКИ

ТОВАР

ПОСТАВЩИК

 

канцтовары

бумага

 

ручка

Pencraft

 

хозтовары

мыло

 

бумага

Pencraft

 

канцтовары

карандаш

 

мыло

Procter & Gamble

 

косметика

помада

 

карандаш

Flic

 

игрушки

самолет

 

чернила

Pencraft

 

игрушки

машина

 

духи

Beautex

 

игрушки

кукла

 

чернила

Flic

 

косметика

духи

 

посуда

Cremco

 

канцтовары

чернила

 

помада

Beautex

 

хозтовары

посуда

 

самолет

Signal

 

канцтовары

ручка

 

машина

Signal

 

 

кукла

Signal

 

посуда

Flic

 

ручка

Beautex

 

карандаш

Pencraft

 

ТИПЫ ТОВАРОВ

ТОВАР

ЦВЕТ

СТОИМОСТЬ

 

посуда

белый

30

 

помада

красный

17

 

духи

 

42

 

ручка

зеленый

6

 

карандаш

синий

2

 

чернила

зеленый

4

 

чернила

синий

3

 

карандаш

красный

2

 

карандаш

синий

2

Пример 1.  Запрос на выборку.

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

ТИПЫ ТОВАРОВ

ТОВАР

ЦВЕТ

СТОИМОСТЬ

 

Р. ХХ

зеленый

 

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

Выборка данных

Простая выборка. Примером простой выборки является запрос: «Вывести все возможные цвета товаров из таблицы ТИПЫ ТОВАРОВ».

Простая выборка с упорядочиванием. Для упорядочивания выводимых значений по возрастанию или по убыванию используются конструкции «АО.» и «DO.» соответственно. Если требуется упорядочить по нескольким столбцам, применяют конструкцию  «АО(1)» и «АO(2)».

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

1.      Точное совпадение задается вводом констант в соответствующих полях шаблона.

2.      Частичное совпадение задается с помощью элементов примера.

3.      Условие сравнения записывается с помощью операций сравнения: = (равно); > (больше); < (меньше); <> (не равно); >= (больше или равно); <= (меньше или равно).

Пример 2.  Условия сравнения.

Запрос имени сотрудников, работающих в отделе игрушек и получающих зарплату больше 1800, выглядит так:

СЛУЖАЩИЕ

ФИО

ЗАРПЛАТА

РУКОВОДИТЕЛЬ

ОТДЕЛ

 

Р.

>1800

 

игрушки

Результатом является таблица вида:

СЛУЖАЩИЕ

ФИО

 

Григорьева А.Н.

 

Томилов А.Н.

Пример 3.  Сравнения с элементами примера.

Запрос вида: «Найти сотрудников, получающих зарплату больше чем Х».

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

·         AND – конъюнкция (И);

·         OR – дизъюнкция (ИЛИ);

·         NOT – отрицание (НЕ);

·         XOR – дизъюнкция II (исключающее ИЛИ);

·         EQV – эквивалентность;

·         IMP – импликация.

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

·         отрицание;

·         конъюнкция;

·         дизъюнкция.

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

 

Вернутся в содержание.


Скачано с www.znanio.ru

Тема 3.2. Реляционная алгебра

Тема 3.2. Реляционная алгебра

P Д # Название

P Д # Название

Реляционная алгебра. Реляционная алгебра как теоретический язык запросов по сравнению с реляционным исчислением более наглядно описывает выполняемые над отношениями действий

Реляционная алгебра. Реляционная алгебра как теоретический язык запросов по сравнению с реляционным исчислением более наглядно описывает выполняемые над отношениями действий

Операции реляционной алгебры могут выполняться над одним отношением или над двумя отношениями

Операции реляционной алгебры могут выполняться над одним отношением или над двумя отношениями

Внешне подходы сильно различаются: один из них предписывающий (ре­ляционная алгебра), а другой описательный (реляционное исчисление)

Внешне подходы сильно различаются: один из них предписывающий (ре­ляционная алгебра), а другой описательный (реляционное исчисление)

S и отношения, полу­ченного на предыдущем шаге; · спроецировать текущее отношение на атрибуты

S и отношения, полу­ченного на предыдущем шаге; · спроецировать текущее отношение на атрибуты

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

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

Белкин Б.Н. 1800 Петров

Белкин Б.Н. 1800 Петров

Пример 1. Запрос на выборку

Пример 1. Запрос на выборку

Запрос вида: «Найти сотрудников, получающих зарплату больше чем

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