Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бд ответы.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
459.25 Кб
Скачать

10.Теоретико-множественные операции над отношениям

Рассматриваются специальные операции над отношениями: выборка, проекция, декартово произведение, соединение. Приводятся различные типы соединений: соединение по эквивалентности, естественное, внешнее соединение, полусоединение. Операции над отношениями иллюстрируются на примерах оператора SELECT. Рассматриваются примеры выбора данных из нескольких таблиц. Приводится объединение результатов нескольких запросов. 

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

Для иллюстрации теоретико-множественных операций над отношениями введем абстрактные отношения (таблицы) с некоторыми атрибутами (полями).

Отношение R

R.a1  R.a2

A       1

A       2

B       1

B       3

B       4

 

CREATE TABLE R

(a1 CHAR(1), a2 INT, PRIMARY KEY(a1,a2))

Отношение S

S.b1  S.b2

1        h

2        g

3        h

 

CREATE TABLE S

(b1 INT PRIMARY KEY, b2 CHAR(1)) 

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

Операция выборки 

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

Операция выборки работает с одним отношением R и определяет результирующее отношение, которое содержит только те кортежи (строки) отношения R, которые удовлетворяют заданному условию F (предикату). 

σF(R) или σпредикат(R). 

Пример 5.1. Операция выборки в SQL. 

Выборка σ(a2=1)( R )={(a, 1), (b, 1)} записывается следующим образом:

SELECT a1, a2

FROM R

WHERE a2=1

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

         Правила. Механизм правил (триггеров) позволяет программировать обработку ситуаций, возникающих при любых изменениях в БД.

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

Важнейшая цель механизма триггеров - обеспечить целостность БД.

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

Таким образом, правило позволяет определить реакцию сервера на любое изменение состояния БД. Правила (так же, как и процедуры) хранятся непосредственно в БД независимо от прикладных программ.

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

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

Реляционная алгебра была представлена E. F. Codd в 1972 году. Она состоит из множества операций над отношениями:

ВЫБОРКА(SELECT) (σ): извлечь кортежи из отношения, которые удовлетворяют заданным условиям. Пусть R - таблица, содержащая атрибут A. σA=a(R) = {t ∈ R ∣ t(A) = a} где t обозначает кортеж R и t(A) обозначает значение атрибута A кортежа t.

ПРОЕКЦИЯ(PROJECT) (π): извлечь заданные атрибуты (колонки) из отношения. Пусть R отношение, содержащее атрибут X. πX(R) = {t(X) ∣ t ∈ R}, гдеt(X) обозначает значение атрибута X кортежа t.

ПРОИЗВЕДЕНИЕ(PRODUCT) (×): построить декартово произведение двух отношений. Пусть R - таблица, со степенью k1 и пусть S таблица со степеньюk2. R × S - это множество всех k1 + k2 - кортежей, где первыми являются k1 элементы кортежа R и где последними являются k2 элементы кортежа S.

ОБЪЕДИНЕНИЕ(UNION) (∪): построить теоретико-множественное объединение двух таблиц. Даны таблицы R и S (обе должны иметь одинаковую степень),объединение R ∪ S - это множество кортежей, принадлежащих R или S или обоим.

ПЕРЕСЕЧЕНИЕ(INTERSECT) (∩): построить теоретико-множественное пересечение двух таблиц. Даны таблицы R и S, R ∪ S - это множество кортежей, принадлежащих R и S. Опять необходимо, чтобы R и S имели одинаковую степень.

ВЫЧИТАНИЕ(DIFFERENCE) (− или ∖): построить множество различий двух таблиц. Пусть R и S опять две таблицы с одинаковой степенью. R - S - это множество кортежей R,не принадлежащих S.

СОЕДИНЕНИЕ(JOIN) (∏): соединить две таблицы по их общим атрибутам. Пусть R будет таблицей с атрибутами A,B и C и пусть S будет таблицей с атрибутами C,D и E. Есть один атрибут, общий для обоих отношений,атрибут C. R ∏ S = πR.A,R.B,R.C,S.D,S.E(σR.C=S.C(R × S)). Что же здесь происходит? Во-первых, вычисляется декартово произведение R × S. Затем, выбираются те кортежи, чьи значения общего атрибута C эквивалентны (σR.C = S.C). Теперь мы имеем таблицу, которая содержит атрибут C дважды и мы исправим это, выбросив повторяющуюся колонку.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]