Реляционное исчисление на кортежах

  • ppt
  • 27.04.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 140. Реляционное исчисление на кортежах.ppt

Реляционное исчисление на кортежах

Язык Альфа

Реляционное исчисление на кортежах

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

Пример реляционной модели “Поставка деталей” (подчеркнуты ключевые поля):
ДЕТАЛЬ (ДИмя, ДНомер, ДМодель, ДЦена)
ПОСТАВЩИК (ПИмя, ПНомер, Город)
КЛИЕНТ (КИмя, КНомер, Город)
ПОСТАВКА (ДНомер, ПНомер, КНомер, Дата, Колво)

Операция GET

Строки выбираются во временную таблицу, назовем ее W.

Найти все названия поставщиков и города, в которых они находятся.

GET W(ПОСТАВЩИК.ПНомер,
ПОСТАВЩИК.Город)

proj

Формирование условий

В условиях используются операции сравнения =,!=, >,<,>=,<=.
Для формирования сложных условий используются логические связки AND, OR, NOT.
Строки-константы задаются в кавычках.

Найти все детали модели МС550

GET W(Деталь) : ДМодель=”МС550”

sel

Выборка из нескольких таблиц

Напечатать, какие детали и когда поставлялись – названия деталей и даты поставок.

GET W(Деталь.ДИмя, Поставка.Дата): Деталь.ДНомер=Поставка.ДНомер

join

Переменные и квантор 

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

RANGE Поставка X
GET W(Деталь.ДИмя, Клиент.Город): X (Деталь.ДНомер=Х.ДНомер AND Клиент.КНомер=X.КНомер)

join

Переменные и квантор 

Напечатать имена поставщиков, которые не поставляют детали клиенту с номером 123

RANGE Поставка X
GET W(Поставщик.ПИмя): X (Поставщик.ПНомер!=Х.ПНомер OR X.КНомер!=123)
или
GET W(Поставщик.ПИмя): !X (Поставщик.Пномер=Х.ПНомер AND X.КНомер=123)

difference

Переменные и кванторы  и 

Напечатать имена поставщиков, которые поставляют детали всем клиентам.

RANGE Поставка X
RANGE Клиент Y

GET W(Поставщик.ПИмя): YX (Поставщик.ПНомер=Х.ПНомер AND Y.КНомер=X.КНомер)

division

Запрос из нескольких шагов

Напечатать имена поставщиков, которые поставляют детали всем клиентам из Москвы.

GET W(Клиент.КНомер): Клиент.Город=«Москва»

RANGE Поставка X
RANGE W Y

GET W2(Поставщик.ПИмя):
YX (Поставщик.ПНомер=Х.ПНомер AND Y.КНомер=X.КНомер)

division

Еще примеры

Напечатать имена поставщиков, которые поставляют детали клиентам из Москвы и из Казани.
RANGE Поставка X1
RANGE Клиент Y1
RANGE Поставка X2
RANGE Клиент Y2
GET W(Поставщик.ПИмя): X1 X2 Y1 Y2
(Поставщик.ПНомер=Х1.ПНомер AND Y1.КНомер=X1.КНомер AND Поставщик.ПНомер=Х2.ПНомер AND Y2.КНомер=X2.КНомер AND Y1.Город=«Москва» AND Y2.Город=«Казань»)

intersection

Еще примеры

Напечатать имена поставщиков, которые поставляют детали клиентам из Москвы или из Казани.
RANGE Поставка X1
RANGE Клиент Y1
GET W(Поставщик.ПИмя): X1 Y1
(Поставщик.ПНомер=Х1.ПНомер AND Y1.КНомер=X1.КНомер AND (Y1.Город=«Москва» OR Y1.Город=«Казань») )

Еще примеры

Напечатать имена поставщиков, которые сами находятся в Москве или поставляют детали клиентам из Москвы.
RANGE Поставка X1
RANGE Клиент Y1
GET W(Поставщик.ПИмя):
Поставщик.Город= «Москва» OR
X1 Y1
(Поставщик.ПНомер=Х1.ПНомер AND Y1.КНомер=X1.КНомер AND Y1.Город=«Москва» )

union

Агрегатные функции

COUNT, MIN, MAX, TOTAL, AVERAGE

Подсчитать количество поставщиков из Москвы
GET W( COUNT(Поставщик.ПНомер)) : Поставщик.Город=«Москва»

Сортировка и задание количества строк

Сортировка: UP или DOWN

Напечатать названия 5 самых дорогих деталей:

GET W(5)(Деталь.ДИмя) : DOWN Деталь.Цена

Изменение данных

Заменить город на Москву у поставщика с номером 456

HOLD W(Поставщик): Поставщик.ПНомер=456
W.Город = «Москва»
UPDATE W

Добавление данных

Добавить поставщика с номером 987, названием «Альфа» и городом «Москва»

W.ПНомер=987
W.ПИмя= «Альфа»
W.Город = «Москва»
PUT W(Поставщик)

Удаление данных

Удалить поставщика с номером 135

HOLD W (Поставщик): Поставщик.ПНомер=135
DELETE W