ТОРА (9) - Семинар №1 - Операции реляционной алгебры — различия между версиями

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана - студенческое сообщество
Перейти к: навигация, поиск
(Задача №7)
м (Откат правок 213.87.153.58 (обсуждение) к версии 109.188.127.49)
Строка 257: Строка 257:
 
=== Задача №7 ===
 
=== Задача №7 ===
  
Найти Фамилии поставщиков, поставляющих шайбы в количестве больше 100.
+
Найти номера и фамилии поставщиков, поставляющих шайбы в количестве больше 100.
  
 
{{Формула|f=w = \sigma_{PF=шайба}(P)}}
 
{{Формула|f=w = \sigma_{PF=шайба}(P)}}
Строка 267: Строка 267:
 
{{Формула|f=q = z \bowtie_{SN} S}}
 
{{Формула|f=q = z \bowtie_{SN} S}}
  
{{Формула|f=x = \Pi_{SF}(q)}}
+
{{Формула|f=x = \Pi_{SN,SF}(q)}}
  
 
Получится:
 
Получится:
  
 
{| class="wikitable"
 
{| class="wikitable"
  ! SF
+
  ! SN || SF
 
  |- align="center"
 
  |- align="center"
  | Иванов
+
  | S1 || Иванов
 
  |- align="center"
 
  |- align="center"
  | Петров
+
  | S2 || Петров
 
  |}
 
  |}
  

Версия 20:03, 26 сентября 2016

Операции реляционной алгебры и их связь с SQL.

Операторы SQL

SELECT

SELECT - выборка, DISTINCT - исключая.

SELECT [DISTINCT] * | атрибуты
FROM таблицы
WHERE условие

UPDATE

UPDATE - обновление, изменение.

UPDATE таблица
SET атрибут = выражение
WHERE условие

INSERT

INSERT - вставка, добавление новых записей.

INSERT
INTO таблица
записи

DELETE

DELETE - удаление записей.

DELETE
FROM таблица
WHERE условие

Предметная область, используемая в задачах

Этого семинара, само собой.

Таблицы

Таблицы $\rho=(S,P,SP)$

  • $S$ - поставщики.
    • SN - номер поставщика;
    • SF - фамилия;
    • SS - статус;
    • SG - город.
  • $P$ - деталь.
    • PN - номер детали, ключ;
    • PF - название детали;
    • PC - цена за единицу.
  • $SP$ - поставка.
    • SN - номер поставщика;
    • PN - номер детали;
    • kol - количество поставляемых деталей.

Примеры экземпляров отношений

$S$
SN SF SS SG
S1 Иванов 80 Москва
S2 Петров 40 Самара
S3 Кротов 100 Москва
$P$
PN PF PC
P1 болт 20
P2 гайка 25
P3 шайба 10
P4 гайка 30
$SP$
SN PN kol
S1 P1 100
S1 P3 200
S2 P3 150
S3 P3 50

Задачи

Задача №1

Проекция. Найти города, где проживают поставщики.

$t=\Pi_{SG}(S)$

Получится:

SG
Москва
Самара
SELECT DISTINCT SG FROM S

Задача №2

Селекция. Найти поставщиков со статусом больше 70.

$t=\sigma_{SS>70}(S)$

Получится:

SN SF SS SG
S1 Иванов 80 Москва
S3 Кротов 100 Москва
SELECT * FROM S WHERE SS > 70

Задача №3

Найти номера и фамилии поставщиков со статусом меньше 80.

$t=\Pi_{SN,SF}(\sigma_{SS<80}(S))$

Получится:

SN SF
S2 Петров
SELECT SN, SF
FROM S
WHERE SS < 80

Задача №4

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

$SP = SP - \sigma_{SN=S1}(SP)$

Получится:

SN PN kol
S2 P3 150
S3 P3 50
DELETE
FROM SP
WHERE SN = S1

Задача №5

Добавить в таблицу S новых поставщиков из таблицы SNEW.

SN SF SS SG
S4 Петров 30 Тверь
S5 Сидоров 50 Тверь

$S = SP\bigcup S$

Получится:

SN SF SS SG
S1 Иванов 80 Москва
S2 Петров 40 Самара
S3 Кротов 100 Москва
S4 Петров 30 Тверь
S5 Сидоров 50 Тверь
INSERT
INTO S
SELECT * FROM SNEW

Задача №6

Найти номера поставщиков, поставляющих детали по цене меньше 30.

$r = \sigma_{PC<30}(P)$

$t = SP \bowtie_{PN} r$

Получится:

PN PF PC SN kol
P1 болт 20 S1 100
P3 шайба 10 S1 200
P3 шайба 10 S2 150
P3 шайба 10 S3 50

$z = \Pi_{SN}(t)$

Получится:

SN
S1
S2
S3
SELECT DISTINCT SN
FROM SP, P
WHERE PC < 30 AND SP.PN = P.PN

Задача №7

Найти номера и фамилии поставщиков, поставляющих шайбы в количестве больше 100.

$w = \sigma_{PF=шайба}(P)$

$t = w \bowtie_{PN}SP$

$z = \sigma_{kol>100}(t)$

$q = z \bowtie_{SN} S$

$x = \Pi_{SN,SF}(q)$

Получится:

SN SF
S1 Иванов
S2 Петров
SELECT SN, SF
FROM S, P, SP
WHERE PF = 'шайба' AND kol > 100 AND P.PN = SP.PN AND SP.SN = S.SN

Задача №8

Все поставщики переехали из Москвы в Питер. Модифицировать таблицу S.

$t = \sigma_{SS=Москва}(S)$, получится:

SN SF SS SG
S1 Иванов 80 Москва
S3 Кротов 100 Москва

$\Pi_{SS,SF,SS}(t)$, получится:

SN SF SS
S1 Иванов 80
S3 Кротов 100

Ввели новую таблицу spb:

SG
Санкт-Петербург

$m = f\times spb$, получится:

SN SF SS SG
S1 Иванов 80 Санкт-Петербург
S3 Кротов 100 Санкт-Петербург

$z = S - t$, получится:

SN SF SS SG
S2 Петров 40 Самара

$S = m \bigcup z$, получится:

SN SF SS SG
S1 Иванов 80 Санкт-Петербург
S3 Кротов 100 Санкт-Петербург
S2 Петров 40 Самара
UPDATE S
SET SG='Санкт Петербург'
WHERE SG='Москва'