Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРБД_Ч2.doc
Скачиваний:
6
Добавлен:
25.11.2018
Размер:
813.57 Кб
Скачать

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

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

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

Они обладают приблизительно одинаковыми возможностями.

Доказана их эквивалентность.

Известны алгоритмы перевода запросов с одного языка на другой.

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

Язык – императивный (в основе), - используют предписание, которое оперирует большинством отношений и атрибутов.

На РА базируется язык запросов SQL.

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

Построение запросов по образцу:

В качестве операндов и результатов берётся отношение.

Операции делятся на:

1. Классические теоретико-множественные: объединение, разность, пересечение и прямое произведение.

2. Специфические: выборка, проекция, деление и соединение.

Позднее РА, предложенную Коддом, анализировал Дейт: алгебра оказалась избыточной.

Первичные только 5 операций: объединение, разность, прямое произведение, выборка и проекция.

Пример:

Предметная область: Детали:

Поставщик(NP, FIO, S, CP);

Детали(ND, NAME, TYPE, VES, CD);

Поставки(NP, ND, KOL).

Соглашения:

Каждый поставщик перевозит несколько деталей.

Одна и та же деталь может поставляться несколькими поставщиками.

NP

FIO

S

CP

1

Иванов

20

Москва

2

Сидоров

21

Рязань

3

Петров

15

Москва

4

Северов

12

Мурманск

5

Центровой

18

Москва

ND

NAME

TYPE

VES

CD

1

болт

калёный

30

Калуга

2

болт

медный

25

Москва

3

болт

нерж.

35

Москва

4

гайка

калёный

10

Москва

5

гайка

медный

12

Рязань

6

заклёпка

дюраль

8

Москва

NP

ND

KOL

1

1

300

1

2

500

1

3

350

1

4

300

1

6

400

2

1

500

2

5

700

3

2

200

4

5

100

4

6

1000

5

3

250

Рассмотрим операции:

1. Объединение: бинарная; операнды (отношения) должны иметь одинаковую структуру.

Результат: отношение, полученное путём объединения картежей, каждый из которых принадлежит хоть одному отношению.

Синтаксис:

<Отношение 1> UNION <Отношение 2>.

R1:

NP

FIO

S

CP

1

Иванов

20

Москва

3

Петров

15

Москва

5

Центровой

18

Москва

R2:

NP

NAME

S

CP

1

Иванов

20

Москва

2

Сидоров

21

Рязань

R1 UNION R2

NP

FIO

S

CP

1

Иванов

20

Москва

2

Сидоров

21

Рязань

3

Петров

15

Москва

5

Центровой

18

Москва

2. Вычитание: бинарная операция; операнды должны иметь одинаковую структуру.

Синтаксис:

<отношение 1>MINUS<отношение 2>.

Результат: совокупность кортежей, каждый из которых входит в R1 и не входит в R2.

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

Синтаксис:

R1 INTERSECT R2.

4. Прямое произведение: бинарная операция; операнды могут иметь разную структуру.

Результат: отношение, структура которого получается путём объединения атрибутов операндов.

Синтаксис:

<Отношение 1>TIMES<Отношение 2>;

R1 TIMES R2

NP

FIO

S

CP

ND

NAME

TYPE

VES

CD

1

Иванов

20

Москва

1

болт

калёный

30

Калуга

--

--

--

--

--

--

--

--

--

5

Центровой

18

Москва

6

заклёпка

дюраль

8

Мурманск

5. Выборка: одноместная.

Синтаксис:

<Отношение>WHERE<Выражение>;

где <Выр.>, - скалярное (имеет смысл условия).

Результат: отношение с той же структурой, содержащее кортежи с условием <Выр.>.

Пример:

Поставщик WHERE CP = “Москва”:

NP

FIO

S

CP

1

Иванов

20

Москва

3

Петров

15

Москва

5

Центров

12

Москва

6. Проекция:

Синтаксис:

<Отношение>[<Список атрибутов>];

где <Список атрибутов>; - подмножество атрибутов <Отношение>.

Результат: Отношение, которое получается из исходного путём удаления атрибутов, не вошедших в список.

7. Деление: 2х-местная.

Синтаксис: <Отношение 1>DIVIDEBY<Отношение 2>.

Результат: отношение, содержащее атрибуты <Отношение 1>, не являющиеся атрибутами <Отношение 2>.

8. Соединение:

I. По произвольному условию:

Синтаксис: (<Отношение 1>TIMES<Отношение 2>)WHERE<Выражение>.

II. Особый случай соединения (чаще используется):

а). EQ – соединение. Чтобы его выполнить, <Отношение 1> и <Отношение 2>

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

Пример:

(Поставщик TIMES Детали)WHERE CP=CD;

NP

FIO

S

CD

ND

NAME

TYPE

VES

CD

1

Иванов

20

Москва

2

болт

медный

25

Москва

1

Иванов

20

Москва

3

болт

нерж.

35

Москва

--

--

--

--

--

--

--

--

--

всего: 9 строчек будет.

б). Естественное: <Отношение 1>JOIN<Отношение 2>; - должен быть единственный атрибут, который есть в обоих отношениях.

Результат: Отношение, которое имеет структуру

<Отношение 1> + <Отношение 2> (общий атрибут повторяется однажды).