Реляционная алгебра — Программные продукты

Вопрос12! Язык манипулирования данными в иерархических базах данных

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

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

Нам необходимо вести
учет продаваемой продукции.

Рис.
16. Физическая
БД «Филиалы»

Какие
задачи нам надо решать в ходе разработки
приложения?

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

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

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


Для
того чтобы можно было бы принимать
заказы на индивидуальные модели, нам
понадобится информация
о наличии конкретных деталей на складе,
в этом случае нам необходимо второе
дерево
— Склады (см.рис. 17).

Рис.
17. Физическая
модель «Склады»

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

шаблоны
всех записей логических баз данных,
доступных пользователю;

указатели
на текущий экземпляр сегмента данного
типа — для всех типов сегментов.

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

Все
операторы
в языке манипулирования данными можно
разделить на 3 группы. Первую группу
составляют операторы
поиска данных.

Заключительная часть

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

Вопросы на самоподготовку:

  1. Реляционная алгебра. Операторы. Реляционная замкнутость. Примеры.
  2. Реляционная алгебра. Семантика операторов. Назначение реляционной алгебры. Примеры.
  3. Реляционное исчисление. Исчисление кортежей. Переменные кортежей. Свободные и связанные переменные. Кванторы. Примеры.
  4. Средства языка SQL манипулирования данными: Запросы SQL. Структура запроса. Вложенные подзапросы. Обобщающие функции. Примеры.
  5. Средства языка SQL манипулирования данными: Запросы SQL. Структура запроса. IN-условия. Кванторы. Примеры.
  6. Ограничения целостности данных. Типы ограничений целостности. Ограничения целостности типа и атрибута. «Золотое правило». Триггеры.
  7. Ограничения целостности данных. Типы ограничений целостности. Ограничения целостности переменной-отношения и БД. Ключи.
  8. Средства языка SQL поддержания ограничений целостности данных: Ограничения домена, базовой таблицы и утверждения. Операторы языка SQL. Примеры.

Преподаватель цикла № 2

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

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

Введение в реляционную алгебру

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

Возможно определение любого числа операторов, единственным требованием к которым является удовлетворение условию «отношение на входе – отношение на выходе».

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

  • Традиционные операторы над множествами: объединение, пересечение, разность и декартово произведение.
  • Специальные реляционные операции: выборка, проекция, соединение и деление.

Рис. 3.1. Графическая интерпретация восьми операторов

Реляционная замкнутость

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

. Благодаря этому свойству можно записывать

вложенные реляционные выражения » alt=»»>

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

Введение в реляционное исчисление

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

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

Пример 3. 7

В качестве примера рассмотрим следующий запрос: «Выбрать номера поставщиков и названия городов, в которых находятся поставщики детали с номером ‘P2’».

Алгебраическая версия запроса выглядит следующим образом: 1) сначала выполнить соединение отношения поставщиков S и отношения поставок по атрибуту S#; 2) Выбрать из результата соединения кортежи с номером детали ‘P2’; 3)Выполнить проекцию для результата этой выборки по атрибутам S# и CITY.

Получить атрибуты S# и CITY для таких поставщиков S, для которых в отношении SP существует запись о поставке с тем же значением атрибута S# и со значением атрибута P#, равным ‘P2’.

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

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

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

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

Другими словами, если переменная кортежа V изменяется в пределах отношения r, то в любой заданный момент времени переменная V представляет некоторый кортеж t отношения r.

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

Исчисление кортежей

::= RELATION < >
| | | ( )Определение реляционного выражения осталось прежним, но имеет иное определение.
::=
RANGEVAR RANGES OVER ;
может использоваться в следующих случаях:
Перед точкой и последующим уточнением в параметре ;
Сразу после квантора в параметре ;
Как операнд в параметре ;
Как параметр или как подпараметр в параметре .

Параметр может использоваться как параметр , но только в определенном контексте:
Как операнд параметра ;
Как параметр или как подпараметр в параметре .
::=… все обычные возможности |

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *